Le grand Zorro
Messages postés50Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention12 mai 2008
-
24 mars 2008 à 19:14
Le grand Zorro
Messages postés50Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention12 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 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Le grand Zorro
Messages postés50Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention12 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")
Le grand Zorro
Messages postés50Date d'inscriptionmercredi 4 août 2004StatutMembreDernière intervention12 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?!
Vous n’avez pas trouvé la réponse que vous recherchez ?