Bonjour,
Je bloque sur la manière de laquelle importer un fichier texte dans un tableau Access (.accdb).
Dans un premier temps je récupère les informations sur le fichier texte (nombre de colonnes et nombre de lignes).
Ensuite je crée une table dans ma base Access pour y importer le fichierCode:
1
2
3 string[] allFileLines = File.ReadAllLines(fileLocation); int fileLines = allFileLines.Length; int fileColumns = allFileLines[0].Split('\t').Length;
Le tableau étant vide j'y écris l’entête du fichier texte.Code:
1
2
3 dbCommand.CommandText = "CREATE TABLE " + tblName; dbConnection.Open(); dbCommand.ExecuteNonQuery();
Je définie ensuite 3 string contenant chacun les informations pour ma requête SQL.Code:
1
2
3
4
5 for (int fileColumnName = 0; fileColumnName < fileColumns; fileColumnName++) { dbCommand.CommandText = "ALTER TABLE " + tblName + " ADD COLUMN " + fileHeader[fileColumnName] + " TEXT(255)"; dbCommand.ExecuteNonQuery(); }
Ce qui donne quelque chose comme cela :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 for (int fieldImportLoop = 0; fieldImportLoop < fileColumns; fieldImportLoop++) { importFieldName[fieldImportLoop] = "[" + fileHeader[fieldImportLoop] + "]"; fieldNames = fieldNames + ", " + importFieldName[fieldImportLoop]; importFieldValue[fieldImportLoop] = "@" + fileHeader[fieldImportLoop]; fieldValues = fieldValues + ", " + importFieldValue[fieldImportLoop]; realFieldValue[fieldImportLoop] = '\u0022' + fileLinesSplit[fieldImportLoop] + '\u0022'; realValues = realValues + ", " + realFieldValue[fieldImportLoop]; } fieldNames = "(" + fieldNames.Substring(2) + ")"; fieldValues = "(" + fieldValues.Substring(2) + ")"; realValues = realValues.Substring(2);
Maintenant je souhaiterais importer ligne par ligne mon fichier texte dans ma base Access dans mon tableau.Code:
1
2
3 fieldNames => ([SOCIETE], [CIV], [NOM], etc...) fieldValues => (@SOCIETE, @CIV, @NOM, etc...) realValues => "ENTREPRISE MACHIN", "MONSIEUR", "MACHIN", etc...
C'est maintenant que j'ai un problème, sachant que mes fichiers n'ont jamais la même structure càd nombre de colonnes comment je peux procéder pour avoir un "Parameters.addWithValue" dynamique ?Code:string dbCommandString = "INSERT INTO [" + tblName + "]" + fieldNames + " VALUES " + fieldValues;
En théorie faudrait que j'écrive une ligne comme au dessus par Champ.Code:dbCommand.Parameters.AddWithValue("@Champ1", "ValeurCamp1");
Si quelqu'un pourrait me donner une astuce de comment faire, ça serait super sympas.
CrazyNoun