Requete sql et vb6 [Résolu]

praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 21 juin 2011 à 16:32 - Dernière réponse : cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention
- 22 juin 2011 à 23:17
Bonjours,

J'ai beaucoup posté de sujet sur les requêtes je dois voir une malédiction je ne sais pas
Si on dit "on apprend de ses erreurs" ben moi la je vais apprendre beaucoup beaucoup de choses.. ^^'

Alors voila le contexte :

Dans Access j'ai une table qui contient tous les critères d'organismes : le nom, la ville, l'arrondissement etc.
Parmi ces champs, j'en sélectionne trois ( le nom, la ville et l'arrondissement) que j'affiche dans une msflexgrid. Ainsi j'ai la liste de tous mes organismes avec leurs infos importantes..
J'ai donc un bouton "ajouter"(dans une form à coté) qui exécutera une requête "INSERT INTO" :

ROrganisme = "INSERT INTO ORGANISME (NOMORGANISME, TYPEORGANISME, GENREORGANISME, INTERLOCUTEUR,FONCTION,TELPERSONNEL,TELTRAVAIL,ADRESSEORGANISME,ARRONDISSEMENT,VILLEORGANISME,CP,RMQ) VALUES ('" & TNomOrganisme.Text & "', '" & ComboType.Text & "', '" & ComboGenre.Text & "', '" & TInterlocuteur.Text & "', '" & TFonction.Text & "', '" & TPortable.Text & "', '" & TTTravail.Text & "', '" & TAdresse.Text & "', '" & TArrondissement.Text & "', '" & TVille.Text & "', '" & TCP.Text & "', '" & TRemarque.Text & "')"
base.Execute (ROrganisme)


Seulement voila, ma requête s’exécute normalement pour un nouvel enregistrement mais SI j'ai par exemple dans ma table un organisme "a" dans une ville "a" ayant pour arrondissement "a" et que j'ajoute dans ma table par cette requête un organisme lui aussi appelé "a" mais qui est dans une ville "b" et un arrondissement "b" ou "a" (peu importe) ma requête insert rien dans ma base de donnée
Comment y remédier?
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 21 juin 2011 à 21:06
3
Merci
Salut

"Ma clé primaire est sur "NomOrganisme""
"j'ai par exemple dans ma table un organisme "a""
"et que j'ajoute (...) un organisme lui aussi appelé "a""

La réponse est dans ta question.
Les clés primaires doivent être uniques.
A mon avis, il te faut sélectionner un couple de champs pour clé primaire, ou ce n° d'organisme, s'il est unique.

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 21 juin 2011 à 23:54
3
Merci
Cette erreur apparait-elle dès premier item ?
Peut-être parce que le compilateur interprète tes signes + comme une demande de calcul mathématique (*). Pour concaténer des chaines, il faut utiliser &.
(*) renforcé par le fait que ton premier champ est surement numérique et que parmi les suivants, il trouve une chaine, d'où l'incompatibilité.

Il est important de bien utiliser les syntaxes et ne laisser aucune interprétation de la part du compilateur. C'est valable ici pour les chaines, mais il serait souhaitable de dimensionner chaque variable utilisée afin d'avoir conscience du type de donnée qu'on veut lui attribuer et penser écrire les fonctions de conversion nécessaires (les fonctions qui commencent par C, comme CStr, CLong, CDbl, CInt, CDate, CDille, CFoutu, CTard, CDodo...)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_Jack
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 21 juin 2011 à 17:36
0
Merci
Salut,
est ce que tu as une erreur lors de ta requete insert ?

Ce n'est pas un problème lié a la clé primaire ?
Commenter la réponse de Moundir76
praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 21 juin 2011 à 17:50
0
Merci
Non aucune erreur lors de la requête insert.
Ma clé primaire est sur "NomOrganisme" Est-ce un problème de la mettre ici ou dois-je plutôt la mettre sur mon champ "N°Organisme"? Qu'est ce que cela changerais?
Commenter la réponse de praetor62
NHenry 14275 Messages postés vendredi 14 mars 2003Date d'inscription 20 octobre 2018 Dernière intervention - 21 juin 2011 à 18:57
0
Merci
Bonjour,

Quel est la requête que tu obtient une fois tout remplacé à l'intérieur (quelle est la requête réellement executée ?)
Histoire de voir si par hasard les champs sont biens remplis.

Mon site
Commenter la réponse de NHenry
praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 21 juin 2011 à 20:35
0
Merci
je n'ai pas très bien compris ta question ^^'
Quand j’exécute ma requête, il n'ajoute/remplit aucun champs dans ma base de donnée (bien-sur tant que le nom de l'organisme est le même, sinon elle insert bien tout ce que je veux dans ma bdd)
Commenter la réponse de praetor62
NHenry 14275 Messages postés vendredi 14 mars 2003Date d'inscription 20 octobre 2018 Dernière intervention - 21 juin 2011 à 21:08
0
Merci
Bonjour,

Que vaut ROrganisme quand avant que tu l'execute ?
Une fois tous les remplacements (de variables) effectués.

Mon site
Commenter la réponse de NHenry
praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 21 juin 2011 à 21:34
0
Merci
Merci Jack je vais tester et voir si ça marche.
NHenry, Enfaite, ROrganisme est déclaré en tant que string

voici mon code en entier :

Dim Nb As Integer
Dim ROrganisme As String

    
 ''==> probleme
ROrganisme = "INSERT INTO ORGANISME (NOMORGANISME, TYPEORGANISME, GENREORGANISME, INTERLOCUTEUR,FONCTION,TELPERSONNEL,TELTRAVAIL,ADRESSEORGANISME,ARRONDISSEMENT,VILLEORGANISME,CP,RMQ) VALUES ('" & TNomOrganisme.Text & "', '" & ComboType.Text & "', '" & ComboGenre.Text & "', '" & TInterlocuteur.Text & "', '" & TFonction.Text & "', '" & TPortable.Text & "', '" & TTTravail.Text & "', '" & TAdresse.Text & "', '" & TArrondissement.Text & "', '" & TVille.Text & "', '" & TCP.Text & "', '" & TRemarque.Text & "')"
base.Execute (ROrganisme)
Commenter la réponse de praetor62
praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 21 juin 2011 à 22:28
0
Merci
Merci Jack ça a bien l'air d’être ça

Dans le même élans, j'ai une autre question :

je voudrais rajouter dans la msflexgrid que je parlais au début du post le numéro d'organisme afin de pouvoir l'utiliser dans d'autre form.
J'ai modifié mon code pour remplir ma flexgrid afin d'avoir ceci :

Dim requete As String

MSFlexGrid1.Cols = 4
MSFlexGrid1.ColWidth(0) = 500
MSFlexGrid1.ColWidth(1) = 1500
MSFlexGrid1.ColWidth(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "Num :"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "Organisme :"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "Ville :"
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "Arrondissement :"

Set base = OpenDatabase(App.Path + "\CirqueDB97")
    requete = "select NOrganisme, NomOrganisme, VilleOrganisme, Arrondissement from ORGANISME"
Set rs = base.OpenRecordset(requete)


Do While rs.EOF = False
    MSFlexGrid1.AddItem rs("NOrganisme") + Chr(9) + rs("NOMORGANISME") + Chr(9) + rs("VilleOrganisme") + Chr(9) + rs("Arrondissement")
    rs.MoveNext
Loop


Quand cette requête de remplissage est executée l'erreur suivante apparait : "runtime error '13' Type mismatch"

l'erreur est sur cette ligne " MSFlexGrid1.AddItem rs("NOrganisme") + Chr(9) + rs("NomOrganisme") + Chr(9) + rs("VilleOrganisme") + Chr(9) + rs("Arrondissement")"
Comment cela ça se fait?
Commenter la réponse de praetor62
praetor62 35 Messages postés dimanche 19 décembre 2010Date d'inscription 14 juillet 2011 Dernière intervention - 22 juin 2011 à 09:20
0
Merci
Oui cette erreur apparaissait dès le premier item ^^'

Effectivement en mettant Cstr devant mon rs("NOrganisme") ça à marché..
Je te remercie de toutes tes précisions ça m'est fort utile
J'ai mis aussi devant non pas Cstr mais Str c'est quoi la différence?
Commenter la réponse de praetor62
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 22 juin 2011 à 23:17
0
Merci
Si tu en fais l'expérience, tu comprendras vite, sinon, jette un coup d’œil dans l'aide.
Commenter la réponse de cs_Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.