Requete insertion?

fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 12 juin 2007 à 15:56
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 12 juin 2007 à 17:39
bonjour,
j'ai un probleme que je pensais pouvoir resoudre mais en fait j'y arrive pas...

voila j'ai des données dans une table tbldoc avec le nom et le chemin d'un document (ce n'est pas les seules données mais ceux sont celles qu'on utilise ici). J'affiche une arborescence a partir de cette table. Quand j'ai lévenement node check je souhaite ajouter les données correspondant au noeud coché dans une table appelée tbltemporaire.

Pour ce faire lors de l'affichage du treeview je declare une collection et je fais
Call CheminCol.Add(.Fields(2).Value, .Fields(1).Value & " (" & .Fields(3).Value & ")")


ensuite lors du node check j'ai
varchemin = CheminCol(Node.Text) ceci afin que varchemin contiennent le chemin qui était dans tbldoc et qui correspond au noeud coché. Ceci marche, j'ai bien varchemin qui contient bien le chemin.
Pour ajouter dans la table temporaire je fais
SQL = "INSERT INTO tbltemporaire (Nomdoc,chemindoc ) values ('" & varnom & "', '" & varchemin & "' ');"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
or a ce moment la j'ai un message d'erreur qui me dit
"erreur de synthaxe dans la chaine dans l'expression "C:\Documents and settings\mondocument.doc'."
Je ne comprend pas pourquoi ce message pour un simple ajout dans ma table tbltemporaire. De plus a la fin de mon message d'erreur j'ai un '. qui ne doit pas etre dans mon expression et qui n'y est pas dans varchemin.
Quelqu'un peut éclairer ma lanterne?
merci

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 juin 2007 à 16:11
SQL = "INSERT INTO tbltemporaire (Nomdoc,chemindoc ) values ('" & varnom & "', '" & varchemin & "' ');"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
12 juin 2007 à 16:15
Il faut que je mette encore une apostrophe au dernier ? Je sais pas si tas vu parce que ca donne mal sur le post mais c pas que des " il y a des apostrophes des fois...c'est que j'ai deja mis des apostrophes, j'ai fait '" & varchemin & "'
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 juin 2007 à 16:20
elle est en trop, au contraire :

tu as filé
SQL = "INSERT INTO tbltemporaire (Nomdoc,chemindoc ) values ('" & varnom & "', '" & varchemin & "'');"

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
12 juin 2007 à 16:29
ah ca marche pas non plus! je vais te mettre le code exact parce qu'en fait je renseigne plusieurs champs mais c'est le meme principe. C'est sur varchemin que ca bloque.

varnom = NomdocCol(Node.Text)
vardescription = DescriptionDocCol(Node.Text)
varfrequence = FrequenceCol(Node.Text)
varchemin = CheminCol(Node.Text)


MsgBox varchemin
SQL = "INSERT INTO tbltemporaire (Nomdoc,FrequenceDoc,DescriptionDoc,chemindoc ) values ('" & varnom & "','" & varfrequence & "','" & vardescription & "','" & varchemin & "');"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL

j'ai mis une msgbox juste avant pour voir la valeur de varchemin est c'est bien le bon chemin sans " ou autres.
J'ai un souci car comme je lé dit, dans mon message d'erreur j'ai des 'ou des . en trop...
je ne pige plus la..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
12 juin 2007 à 16:48
en fait ca ne viens pas de ma synthaxe de la requete.
Ce que je fais c'est que le chemin du document je le recupere a partir d'une boite de dialogue qui me permet de parcourir jusqu'a trouver le dossier. ensuite je met ce que l'utilisateur a selectionné dans la zone de liste lié au champs de la table. Il doit i avoir un probleme a la fin de mon doc car si manuellement je fais des suppr apres le chemin de mon doc selectionné avec la boite de dialogue alors ca fonctionne bien.
voila ce que j'ai fait pour afficher ma boite de dialogue (pris sur le forum du site):
ceci est dans un module
  'Pour boite de dialogue pour recuperer le chemin
   
    Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO


Dim r As Long, x As Long, pos As Integer


    'Définit le Bureau comme dossier racine
    bInfo.pidlRoot = 0&


    'Invite de la boite de dialogue
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Selectionnez un dossier."
    Else
        bInfo.lpszTitle = Msg
    End If
   
    'Type de renvoi : dossier
'    bInfo.ulFlags = &H1
    'Type de renvoi : fichier
    bInfo.ulFlags = &H4000




    'Affiche la boite de dialogue
    x = SHBrowseForFolder(bInfo)
                       
    'Traite le résultat
    path = Space$(100)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
    End If
End Function
et apres tout ce truc je fais pour mettre le chemin selectionné dans la zone "Chemindocument"

Private Sub recherchedocument_Click()


    MsgBox GetDirectory
   chemindocument.Value = "" & path
End Sub
voila...ily a un truc au niveau du nom recupéré, des espaces après ou quelque chose qui coince?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
12 juin 2007 à 17:03
non, me semble correct

vérifies ta requete, une fois que tu as tout concaténé....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
12 juin 2007 à 17:20
tout marche bien, j'ai un souci a ce nom recuperé de la boite d edialogue car :
si je choisi un document dans la boite de dialogue alors le chemin du document  est bien rentré dans la table tbldoc avanrt la requete d'insertion dans tbltemporaire. Si j'utilise directement ce nouvel enregistrement alors j'ai le message d'erreur mais si manuellement je vais dans la table tbldoc et qu'a la fin du chemin du doc je fais des suppr (dans le vide car il n'y a rien d'ecrit) puis qu'ensuite j'utilise ca je n'ai plus le message d'erreur et la requete d'insertion dans tbltemporaire marche. C donc bien que la requete marche. Peut etre que j'ai des soucis de longueur de chaine...pffff j'en sais rien et ca me tue la... 
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
12 juin 2007 à 17:39
bon j'ai reussi a ce que ca marche mais par contre je pense que j'ai du bol parce que je comprend pas. Il devait me manquer un \ a la fin de mon chemin. Ce que j'ai fait c'est dans ma boite de dialogue pour recuperer le nom du fichier
   If r Then
       
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
variablechemin = GetDirectory & ""
Else
...


et je met ensuite variablechemin dans la zone de texte. Ne me demandez pas le pourquoi du comment mais ca marche...enfin....


merci en tout cas de ton aide!
0