ODBC+ VB 6.0

RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004 - 17 juin 2004 à 19:07
RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004 - 21 juin 2004 à 07:44
J'ai une BD Acces 97 et je veux l'attaquer en VB !

J'ai créé un DSN via ODBC, et j'utilise une datagrid et un contrôle de données ADO.

J'ai défini une requête SQL pour remplir la datagrid (recordsource).

Le but est de modifier seulement les données, ça marche pour les valeurs existantes, mais pour les valeurs nulles, ça ne marche pas, toutes les valeurs sont modifiées, et j'ai un message d'erreur :
Information sur la colonne clé insuffisante ou incorrecte, trop de lignes sont affectées par la mise à jour.

Quand je ré-éxécute la requête, toutes les valeurs nulles ont été changées !!!!!!! et non pas seulement celle que j'avais sélectionné !!!!

Bien sûr, j'ai mis le champ d'index dans ma requête SQL ....

J'ai mis à jour ADO, et jet 4.0, j'ai MDAC 2.8 ...

Si quelqu'un peut m'aider, ça serait bien, sinon, je fais un formulaire en PHP :-)

Rémy !!!

7 réponses

baklouti3000 Messages postés 4 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 19 juin 2004
17 juin 2004 à 19:38
si tu as fait une requête aver un "group by" c'est logique, il suffit de mettre un "on error resume next". pour les valeurs nulles je crois que tu doit fair un teste.
0
RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004
18 juin 2004 à 08:59
Voilà ma requête, c'est juste un sélect ....

"SELECT Personnel.[N°Personnel],Personnel.Nom, Personnel.Prénom, Personnel.Initiales, Personnel.[N° Poste 1], Personnel.[N° Poste 2], Personnel.localisation FROM Personnel WHERE (((Personnel.Nom)<>'') AND ((Personnel.Observation) Like '%Présent%')) ORDER BY Personnel.Nom ;"

En fait, je ne gère pas la mise à jour par code, l'objet datagrid et le contrôle data doivent faire ça tout seul .... (et d'ailleurs, ça marche pour les données non-nulles ...).

Rémy !!!
0
baklouti3000 Messages postés 4 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 19 juin 2004
18 juin 2004 à 11:33
les données nulles se sont pas un vide mais un NULL
au lieu de mettre WHERE (((Personnel.Nom)<>'') essayer ca
WHERE (((Personnel.Nom) is not NULL )
0
RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004
18 juin 2004 à 11:56
Et bien ça marche !!!!!!!!!!

Merci beaucoup !!!!!

Je t'avouerai que je n'y croyais pas :-) !!!!

Rémy !!!
0

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

Posez votre question
RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004
18 juin 2004 à 13:12
Bon, fausse alerte, ça ne marche pas ....

En fait, j'ai un champ indexé sans doublons (le champs Initiales), quand j'ai une valeur dedans, ça marche.

Quand la valeur est NULL, et bien ça me remplace toutes les valeurs ayant un champ initiale ayant la valeur NULL par la nouvelle valeur, et quand je change un n° de tel dans un enregistrement ayant une valeur NULL dans le champ initiale, ça remplace toutes les valeurs.

Si je mets une valeur dans ce champ, je n'ai pas de problème, si je supprime la valeur du champ initiale, ça ne marche plus !!!

Le comportement semble être le suivant : on se base sur le champ indexé sans doublon Initiale au lieu de se baser sur le champ indexé sans doublon Personnel.[N°Personnel].

Comment forcer l'utilisation du champ N°Personnel ?

(Bien sur, j'aimerai garder le champ initiale sans doublon, et on ne peut pas le faire sans l'indexer ...)

Thanks anyway :-) !!!!!
Rémy !!!
0
baklouti3000 Messages postés 4 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 19 juin 2004
19 juin 2004 à 11:04
j'ai pas compris qu'est ce que tu veux dir par un champs initilale
0
RemyMM Messages postés 8 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 juin 2004
21 juin 2004 à 07:44
Euh, c'est juste le nom du champ dans lequel je mets les initiales des gens, style MM, RN, JLM, ...

Et pour avoir des initiales uniques (pour permettre une gestion de documents), j'ai mis un index sans doublon sur ce champ.

Rémy !!!
0