Pb d'ajout de données dans une table

Résolu
Le grand Zorro
Messages postés
50
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
12 mai 2008
- 24 mars 2008 à 19:14
Le grand Zorro
Messages postés
50
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
12 mai 2008
- 26 mars 2008 à 08:32
Bonsoir à tous,

Voilà le contexte : Une base de données Access avec des tables et des relations entre elles.
La table T1 est reliée à la table T2 par une liste déroulante.
L'interface est développée sur VB.NET 2005

Les problèmes :
Si je veux ajouter une nouvelle ligne à T1, comment je peux Indiquer quelle l'élément de la table T2 (je connais les valeurs mais je n'arrive pas à les associer) :

Voici le code utilisé :

            LaRequete = "INSERT INTO T_Entreprise (RaisonSociale, Adresse, Adresse2, CodePostal, "
            LaRequete &= "Ville, "
            LaRequete &= " RId_Activite)" (c'est le lien type liste déroulante dans ACCESS)
            LaRequete &= "VALUES('" & LaRaisonSociale & "', '" & LAdresse1 & "', '" & LAdresse2 & "','" & LeCodePostal & "', '"
            LaRequete &= LaVille & "', '" LIdActivite '"
            LaRequete &= "');"
            ExecuterRequete(LaRequete) (cette procédure fonctionne)
Si j'enlève la référence à l'activité cela fonctionne. Mais si je j'ajoute cela plante en me disant que les types sont incompatibles (ID_Activite de la table T_Activite est un entier long (numero auto)

Comment remplir ce champ qui est une liste déroulante issue d'une autre table ?
/********/
J'ai également tester ça :
 Try
                LaRequete = "SELECT * FROM T_Entreprise INNER JOIN T_Activite ON tEntreprise.RId_Activite=T_Activite.Id_Activite ;"
                LeDataAdapter = New OleDbDataAdapter(LaRequete, LaConnexion)
                LeDataAdapter.Fill(LeDataSet)
                Dim LaLigneAAjouter As DataRow
                LaLigneAAjouter = LeDataSet.Tables(0).NewRow()
                LaLigneAAjouter("RaisonSociale") = LaRaisonSociale
                LeDataSet.Tables(0).Rows.Add(LaLigneAAjouter) (si je remplace 0 par le nom de la table ça plante)
                LeDataAdapter.Update(LeDataSet, "T_Entreprise") (Et là ça plante en me disant que T_Entreprise est inconnu au bataillon) .

Pourquoi dès que j'utilise le nom de la table ça ne marche plus ?

Merci d'avance de votre aide
Thierry

5 réponses

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
26 mars 2008 à 02:06
Re
Est-ce que ta première panne est résolue après ce changement de type de donnée ?

Hélas, en .Net, je ne te serai pas de grande aide.
Repose ta question avec la bonne syntaxe  en axant ta question sur l'utilisation du DataSet (LeDataSet)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
79
25 mars 2008 à 03:33
Salut
Première question bleue :
Comme expliqué dans le message d'erreur ET comme répété 10 fois par semaine sur le forum, "si le champ est de type numérique (dans la DB), il ne faut pas encadrer la donnée par des ' qui sont réservés aux textes".
+ Il manque le & de concaténation avant la variable
   LaRequete &= LaVille & "', " & LIdActivite
Vérifie aussi pour le code postal

Deuxième question bleue :
   LeDataSet.Tables(0).Rows.Add(LaLigneAAjouter) (si je remplace 0 par le nom de la table ça plante)
Oui, et le texte de l'erreur, c'est quoi ?
Quelle est ta syntaxe quand tu mets le nom de la table ?

Troisième question bleue :
Je ne connais pas trop les DataAdapter, mais dans la requète initiale, qqchose me choque :
   LaRequete = "SELECT * FROM T_Entreprise ..."
La table s'appelle T_Entreprise et ensuite, dans le Inner Join, tu utilises tEntreprise, sans le _ après le T : bizarre

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Le grand Zorro
Messages postés
50
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
12 mai 2008

25 mars 2008 à 08:44
Merci pour ton aide,

Je fais les modifications pour la première question. Et oui, j'aurais du y penser!! On ne m'y reprendra plus.

Pour la deuxième :
Le message d'erreur est :  La référence d'objet n'est pas définie à une instance d'un objet
pour la syntaxe suivante : LeDataSet.Tables("tEntreprise").Rows.Add(LaLigneAAjouter)

Pour la troisième question :
C'est juste une erreur dans le message j'utilise bien tEntreprise.
Mais le message d'erreur est le suivant : Impossible pour Update de trouver TableMapping['tEntreprise']
Pour la syntaxe suivante : LeDataAdapter.Update(LeDataSet, "tEntreprise")
0
Le grand Zorro
Messages postés
50
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
12 mai 2008

25 mars 2008 à 08:52
J'oubliais, mon code postal est bien en String (de 5 caractères). Etant donné qu'on ne fait pas de calcul avec ce champ, un type numérique me semble inutile. C'est une règle que je me suis faite : Je choisi un type numérique uniquement si je suis susceptible de faire du calcul... Mais ce raisonnement est peut-être dépassé aujourd'hui?!
0

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

Posez votre question
Le grand Zorro
Messages postés
50
Date d'inscription
mercredi 4 août 2004
Statut
Membre
Dernière intervention
12 mai 2008

26 mars 2008 à 08:32
Oui merci, le problème est résolu en enlevant les quotes.
Je vois pour les autres
0