OVH Cloud OVH Cloud

[VB 6.0] probleme update de donnees

3 réponses
Avatar
geo
Hello !

je croche sur un probleme :
j'ai une base Access 2000 avec une table qui comprend 138 champs

dans une boucle, je cree la chaine de carateres qui doit la mettre a jour.

for i = 1 to 138
... je compose la chaine
next

sql = "Update Table_RQ " & ma_chaine & " where ID=" & x

ensuite un execute .

Tout va bien jusqu'a ce que j'aie 138 champs , la j'ai une erreur :
"trop de champs !"

on ne peut pas aller --> 255 champs avec Access ?? y'a t'il un moyen de
contourner ce minimum de 138 champs ? ?il ne m'en manque qu'un ou 2 et
il n'y a pas de moyen "logique" de les mettre en 2 tables ....


Des idees ?


Amicalement


Géo

3 réponses

Avatar
Jean-Marc
"geo" a écrit dans le message de
news:
Hello !

je croche sur un probleme :
j'ai une base Access 2000 avec une table qui comprend 138 champs

dans une boucle, je cree la chaine de carateres qui doit la mettre a jour.

for i = 1 to 138
... je compose la chaine
next

sql = "Update Table_RQ " & ma_chaine & " where ID=" & x

ensuite un execute .

Tout va bien jusqu'a ce que j'aie 138 champs , la j'ai une erreur :
"trop de champs !"

on ne peut pas aller --> 255 champs avec Access ?? y'a t'il un moyen de
contourner ce minimum de 138 champs ? ?il ne m'en manque qu'un ou 2 et
il n'y a pas de moyen "logique" de les mettre en 2 tables ....




Hello,

les spécifications d'Access disent : 255 champs max par table. Le probleme
ne vient donc pas de la (d'ailleurs tu n'aurais pas pu créer ta table si le
probleme était la).

La taille maximum d'un statement SQL est d'approximativement 64000
caracteres. Je ne pense pas que ta chaine fasse 64000.

Donc le probleme est ailleurs.

Je n'ai pas trouvé les specs qui définissent le nombre max de champs qu'on
peut affecter en un seul UPDATE. Perso, je chercherais dans ce sens, et
j'essaierais avec 2 statements UPDATE:

le premier avec les 69 premiers champs,
puis le second avec les 69 suivants, puis COMMIT

Remarque au passage: quelle que soit la nature du probleme, une table avec
138 champs n'est *pas* une bonne idée. On peut 'toujours' faire autrement.

-
Jean-marc
Avatar
geo
Jean-Marc a écrit:
"geo" a écrit dans le message de
news:

Hello !

je croche sur un probleme :
j'ai une base Access 2000 avec une table qui comprend 138 champs

dans une boucle, je cree la chaine de carateres qui doit la mettre a jour.

for i = 1 to 138
... je compose la chaine
next

sql = "Update Table_RQ " & ma_chaine & " where ID=" & x

ensuite un execute .

Tout va bien jusqu'a ce que j'aie 138 champs , la j'ai une erreur :
"trop de champs !"

on ne peut pas aller --> 255 champs avec Access ?? y'a t'il un moyen de
contourner ce minimum de 138 champs ? ?il ne m'en manque qu'un ou 2 et
il n'y a pas de moyen "logique" de les mettre en 2 tables ....





Hello,

les spécifications d'Access disent : 255 champs max par table. Le probleme
ne vient donc pas de la (d'ailleurs tu n'aurais pas pu créer ta table si le
probleme était la).

La taille maximum d'un statement SQL est d'approximativement 64000
caracteres. Je ne pense pas que ta chaine fasse 64000.

Donc le probleme est ailleurs.

Je n'ai pas trouvé les specs qui définissent le nombre max de champs qu'on
peut affecter en un seul UPDATE. Perso, je chercherais dans ce sens, et
j'essaierais avec 2 statements UPDATE:

le premier avec les 69 premiers champs,
puis le second avec les 69 suivants, puis COMMIT

Remarque au passage: quelle que soit la nature du probleme, une table avec
138 champs n'est *pas* une bonne idée. On peut 'toujours' faire autrement.

-
Jean-marc





heu oui c'est une idee de casser ma chaine en 2 update , mais pourquoi
ce "COMMIT" ???


Géo
Avatar
Adam Pietrasiewicz
W sobotê 21-sierpnia-2004 o godzinie 18:11:57 geo napisa³/a


heu oui c'est une idee de casser ma chaine en 2 update , mais pourquoi
ce "COMMIT" ???



Begin Trans et Commit Trans pour que, au cas d'un crash, l'integrite
des donnees soit sauvegardee.

Mais le vrai probleme reste tes 138 champs - ce n'est PAS normal!



--
Pozdrawiam
Adam Pietrasiewicz