Probleme de requete insert via fichier Txt /table

Résolu
Flow8002
Messages postés
21
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
21 novembre 2012
- 4 mai 2008 à 15:32
Flow8002
Messages postés
21
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
21 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) &

")"

db.Execute(sql_statement)

num_records = num_records + 1

End
If 

2 réponses

Flow8002
Messages postés
21
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
21 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, "'", "''")

Bonne soirée a tous
3
Flow8002
Messages postés
21
Date d'inscription
mardi 6 novembre 2007
Statut
Membre
Dernière intervention
21 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....
0