Quest c que le dataset dans ton code ?ligart = dataset.Tables("liste article").NewRow
'ligart("code") = "test"
'ligart("CODEBARRE") = "Test"
'ligart("nom") = "test"
'ligart("TYPE") = "U"
'dataset.Tables("liste article").Rows.Add(ligart)
Quest c que le dataset dans ton code ?ligart = dataset.Tables("liste article").NewRow
'ligart("code") = "test"
'ligart("CODEBARRE") = "Test"
'ligart("nom") = "test"
'ligart("TYPE") = "U"
'dataset.Tables("liste article").Rows.Add(ligart)
Bonjour,
pour khalid71,
c'est ce qui me semblaitmais attention j'utilise VB.net
vb.net => forum dotnet
pour floran30, ou en est tu ?
Je n'y arrive tjrs pas.
Je commence a deseperé j'arrive vraiment a rien avec cette requete INSERT.
Connexion fermée ou non valide dans le contexte.
Je comprend pas serieux.
J'ai pô tout a fais compris ton problème, mais je sais que pour ajouter un enregistrement dans une bdd (pour access), je fais comme ça....
Public Function AjoutBdd()
Dim RscDico As Recordset
Dim LReq As String
openBDD 'ouvre la base de données
LReq = "SELECT * FROM " & le nom de la table & ""
Set RscDico = BDD.OpenRecordset(LReq, dbOpenDynaset)
RscDico.AddNew
le code qui va bien pour tes données
RscDico.Update
RscDico.Close
End Function
Ben en fait je souhaite simplement ajouter une ligne a ma table "Document".
Et je prend les valeurs de cette ligne dans des textbox de ma form.
voila ma requete sql :
Merci pour l'aide totof39, mais j'ai pas compris trop la syntax dans ta fonction."INSERT INTO Document (Document.Id_document, Document.Total_TTC, Document.Total_HT, Document.Total_TVA) " _
& "VALUES ('" & txtNumero.text & "', '" & txtTTC.text & "' , '" & txtHT.text & "', '" & txtTVA.text & "'), con, AdopenDynamic, AdLockOptimistic"
Tu pourrais m'aider stp.
Et je souhaite placer ce code dans un boutton.
Bon j'ai reussi a faire ça :
Dim tbl As dao.Recordset
Dim str As String
Mais il me dit :Dim bd As dao.Database
Set bd = OpenDatabase(".\bd1.mdb")
str = "SELECT * FROM Document "
Set tbl = bd.OpenRecordset(str)
tbl.AddNew
tbl.Fields("Total_TTC") = 11
tbl.Fields("Total_HT") = 11
tbl.Fields("Total_TVA") = 11
tbl.Update
tbl.Close
"Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requi dans la table 'client'"
Mes deux table 'client' et 'document' sont bien en relation mais je ne sais pas comment faire la.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Public Function AjoutBdd() 'fonction à appeler après avoir cliqué sur le bouton Dim RscDico As Recordset Dim LReq As String openBDD 'fonction qui ouvre la base de données LReq = "SELECT * FROM " Document "" 'tu créé ta requete en sélectionnant_ tous les champs de ta table (comme ici)_ ou alors tu met les noms de tes champs Set RscDico = BDD.OpenRecordset(LReq, dbOpenDynaset) 'la tu applique la requete sur la bdd RscDico.AddNew 'ajoute une ligne a la requete RscDico.Fields(Id_document).Value = txtNumero.text ' RscDico.Fields(Total_TTC).Value = txtTTC.text ' RscDico.Fields(Total_HT).Value = txtHT.text ' RscDico.Fields(Total_TVA).Value = txtTVA.text 'rempli le nouvel enregistrement RscDico.Update 'modifie la bdd en ajoutant le nouvel enregistrement RscDico.Close 'ferme le tout End Function
Moi c'est la méthode que j'utilise quand je bosse sur une bdd acces depuis un soft VB. Je sais pas si c'est plus optimiser que le INSERT car je m'en suis jamais servi. Enfin voila, c'est tout ce que je peux faire avec mes maigres connaissances.
Bon courage a toi
LOL, ba la je crois qu'il va falloir que tu migre dans le forum access car je sais pas exactement comment ça se passe quand deux table sont liées.
Désolé de pas pouvoir t'aider plus que ça.
La fonction n'est pas obligatoire, tu peux juste coller le code dans la fonction de ton bouton_click().
Bon j'ai repris ton code totof, mais tjrs impossible d'inserer un enregistrment car l'enregistrement associé est requi dans la table client.
j'ai creer une bdd test avec une seule table est le code marche niquel merci.
Mainenant ce se complique un peut.
essaie donc ça
-pour déclarer tes objets:
dim base as DataBase
dim requete as QueryDef
-pour définir les objets
set base=OpenDataBase("chemin_complet\ta_base.mdb")
set requete=CreateQueryDef("", "INSERT INTO ta_table (champ_num,champ_txt) values (" & val_num & "','" & "' & val_txt & "'")
-pour executerla requete
requete.execute
si ça te marque une erreur type de données incompatible, c'est que tu as fais une erreur dans les quotes (") et les apostrophes.
la syntaxe est differente pour insérer les nombre et les string
..." & nombre & "....
...' " & string & " ' ...
essaie et dis moi
D'après le message, donc ton problème viendrait de ta requete.
Tu essaye de créer un enregistrement dans la table client dont un des champ est lié à celui de la table client (je suppose que c'est l'identifiant Client).
Le message te dit qu'il n'arrive pas à trouver cette correspondance.
De fait, dans ta requete, tu n'as pas l'air d'affecter une valeur à un identifiant client et si ta relation est de type [1,x] (~tout document doit etre lié à au moins un client), cela doit normalement etre refuser."Vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requi dans la table 'client'"
Mes deux table 'client' et 'document' sont bien en relation mais je ne sais pas comment faire la.
Solutions possibles:
- Changer ta structure de la base (ouille ouille, ça c'est mal, cela veut dire que le MCD est mal fait ou que la base ne le respecte pas)
- Mettre un code client dans ton enregistrement.
Bonsoir
J'ai lu ton post et les différentes contributions, et je dois dire que je n'ai pas compris si c'est avec ADO ou DAO. Le message 17 mentionne ADO, le 26 DAO, le 34 ADO, le 44 Ado et le 67 DAO. Alors, soit j'ai mal lu, soit il faudrais que tu précise: DAO ou ADO , et que les contributeurs s'y tiennent.
Il faudrais également que tu précises le contexte. Il apparait à la fin que tu semble utiliser des tables liées. C'est un peut tard.
Dernier point: pourquoi une requête ajout? C'est une obligation ou tu ne sais pas faire autrement (directement avec des contrôles liés aux données). D'après ta réponse à Totoil semble que tu ne sache pas vraiment...Merci pour l'aide totof39, mais j'ai pas compris trop la syntax dans ta fonction
Alors, comme le dirais... je ne sais plus qui, aides nous à t'aider.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager