Jag uppdaterar min access-databas varje vecka med värden från tre textfiler. Nu går det till så att jag laddar hem accessfilen, kör följande kodImportera värden från textfiler
Public Sub ImporteraTextFil()
DoCmd.TransferText acImportDelim, "MotstImpspec", "tabell1", "\\sökväg\textfil1.tab", False
DoCmd.TransferText acImportDelim, "MotstImpspec", "tabell2", "\\sökväg\textfil2.tab", False
DoCmd.TransferText acImportDelim, "ResImpspec", "tabell3", "\\sökväg\textfil3.tab", False
End Sub
och så skickar jag upp accessfilen igen.
Kan man översätta detta till någon kod som skulle kunna köras på servern så att jag i stället skulle kunna ladda upp textfilerna dit och göra importen via websidan i stället.Sv: Importera värden från textfiler
public static DataSet ReadCSV(string dir, string table)
{
DataTable t = new DataTable(table);
DataSet dataSet = new DataSet();
DataColumn column;
StreamReader sr = new StreamReader(dir + @"\" + table + ".csv");
String line = null;
bool headers = true;
while ((line = sr.ReadLine()) != null)
{
if (headers)
{
string[] columnTitles = line.Split(new char[] { ',' });
for (int i = 0; i < columnTitles.Length; ++i)
{
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
string colName = GetStringLiteral(columnTitles[i]);
column.ColumnName = colName;
column.Caption = colName;
t.Columns.Add(column);
}
headers = false;
continue;
}
else
{
Boolean sitSign = false;
DataRow row = t.NewRow();
ArrayList separatorer = new ArrayList();
separatorer.Add(-1);
for (int i = 0; i < line.Length; i++)
{
if (line[i] == '"')
{
sitSign = !sitSign;
if (i < line.Length - 1 && i > 0)
{
if (line[i - 1] != ',' && line[i + 1] != ',')
{
sitSign = !sitSign;
}
}
}
if (line[i] == ',' && !sitSign)
{
separatorer.Add(i);
}
}
separatorer.Add(line.Length);
for (int i = 0; i < separatorer.Count - 1; i++)
{
int a = (Int32)separatorer[i];
int b = (Int32)separatorer[i + 1];
String s = GetStringLiteral(line.Substring((Int32)separatorer[i] + 1, (Int32)separatorer[i + 1] - (Int32)separatorer[i] - 1));
row[i] = s;
}
t.Rows.Add(row);
}
}
dataSet.Tables.Add(t);
return dataSet;
}
Funktion som ser till att du läser upp en csv-fil till ett dataset. Sen kan du leka med datat och lägga det i en accessdatabas eller vad du nu vill göra. Hoppas det hjälper dig.