Flow8002
Messages postés21Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention21 novembre 2012
-
4 mai 2008 à 15:32
Flow8002
Messages postés21Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention21 novembre 2012
-
4 mai 2008 à 19:00
bonjour ,
J'ai un petit souci lors de l'insertion d'un fichier texte en table celui-ci etant delimité par des "@"
il me m'est cette erreur la : Erreur de syntaxe (opérateur absent) dans l'expression , au vue de la requete SQL elle paraît clean toute les valeurs sont bien espacées d'une "," le nombre de champs source et destination sont identiques .... , j'ai bien différencié mes champs par des ' mais bon rien n'y fait :/
si quelqu'un avait une idée je suis preneur :o
voici mon code :
Private
Sub cmdImport_Click(
ByVal eventSender
As System.Object,
ByVal eventArgs
As System.EventArgs)
Handles cmdImport.Click
Dim delimiter
As
String
Dim contents
As
String
Dim lines()
As
String
Dim fields()
As
String
Dim wks
As dao.Workspace
Dim db
As dao.Database
Dim fnum
As
Short
Dim line_num
As
Short
Dim field_num
As
Short
Dim sql_statement
As
String
Dim num_records
As
Integerdelimiter =
"@"
' capture le fichierfnum = FreeFile
FileOpen(fnum,
"C:\damien.txt", OpenMode.Input)
'Mise en memoire du fichiers texte à importercontents = InputString(fnum, LOF(fnum))
FileClose(fnum)
' decoupe chaque ligne a chaque saut de lignelines = Split(contents, vbCrLf)
' Ouvre la base.wks = DAODBEngine_definst.Workspaces(0)
db = wks.OpenDatabase(
"C:\Base Rex.mdb")
'enumere le nombre de lignes
For line_num = LBound(lines)
To UBound(lines)
'si la ligne a une longueur sup a zero execute le code
If Len(lines(line_num)) > 0
Then
' construction de la requete d'insertionsql_statement =
"INSERT INTO T_CRI VALUES("
'decoupe les champsfields = Split(lines(line_num), delimiter)
'enumere le nombre de champs
For field_num = LBound(fields)
To UBound(fields)
' insere les champs a la requêtesql_statement = sql_statement &
"'" & fields(field_num) &
"',"
Next field_num
' 'Enleve la derniere virgule de la requete SQLsql_statement = VB.Left(sql_statement, Len(sql_statement) - 1) &
Flow8002
Messages postés21Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention21 novembre 2012 4 mai 2008 à 19:00
Voila c'est fait , en faite il faut utiliser la fonction "replace " pour virer les simples quote et les remplacer par des doubles quotes
searchValue = Replace(champTexte.Value, "'", "''")
Flow8002
Messages postés21Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention21 novembre 2012 4 mai 2008 à 18:38
J'ai trouvé une partie de la solution .
En faite c'est les mots de type "D'AIR" , l'apostrophe est pris pour un début ou fin de field , il me reste qu'a trouver comment faire pour que VB ne prenne pas en compte les "'" dans un field....