Pourquoi access m'en veux?

Signaler
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010
-
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010
-
Pourquoi Access m'en veux?

J'ai créer des champs dans une base access, d'après la source http://www.vbfrance.com/codes/ADOX-AVEC-CREATION-CLE-MULTIPLE-ACCESS_29726.aspx , j'ai essayé avec adInteger, et adVarWChar mais la réponse est la même dans les 2 cas

Création des champs:
.....
For i = 1 To 50 ' Position Chiffres
     tbl.Columns.Append "Pos_CH_X_" & i, adVarWChar, 10   '  
     tbl.Columns.Append "Pos_CH_Y_" & i, adVarWChar, 10   '
Next

.... je vous fais cadeau du reste du code

Function remplir(azTable As String, Nb_Col As Integer, nb_Lignes As Integer)
Call OuvRir(Chemin(8))
Dim f As Integer
Rc.Open "Select * from " & azTable & "", Ct, adOpenStatic, adLockOptimistic
For f = 1 To nb_Lignes
Rc.AddNew
For i = 1 To Nb_Col
     Rc.Fields(i) = "0"
Next
Rc.Update
Next
Rc.Close
Ct.Close
End Function

et tenez vous bien!

message d'erreur :
Le Champ 'Euroch1.Pos_CH_X_33' ne peut pas contenir une valeur Null car la valeur de la propiété Required pour ce champ est True. Saisissez une valeur dans le champ.

la pos_ch_x_33 n'est ni la première ni la dernière et que quand j'ouvre ma base rien ne différencie ce champ des autres. Un petit indice Quand je fais: For i = 1 To Nb_Col-1 c'est le champ 'Euroch1.Pos_CH_X_32' qui ne doit pas être Null??????

bref Si quelqu'un à une idée, je suis preneur merci d'avance.

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...

9 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
pas logique que tu n'aies pas :

For i = 0 To Nb_Col-1

la collection commence à 0 me semble
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

en fait j'ai essayé d'incrémenter à 0, et 1 pas de difference si ce n'est le champ où il me trouve l'erreur....

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
Nb_Col vaut combien ?

parce que tu as créé 50 champs, pas 33
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

Effectivement j'ai 5 champs infos, 50 champs posY, 50 champs posX, plus quelques champs....
donc nb_col = le nombre de colonne
et nb_ligne pour le faire sur X lignes....
Ce sont des valeur X et Y pour une imprimante.

Qui seront amené à être changé....

Merci pour ton atention

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

en fait je créer les champs ainsi:

For i = 1 To 50 ' Position Chiffres
           tbl.Columns.Append "Pos_CH_X_" & i, adVarWChar, 10   '
           tbl.Columns.Append "Pos_CH_Y_" & i, adVarWChar, 10   '
Next

mais en fait j'ai l'impression que c'est l'ors de la dernière boucle que ça bug

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
si tu as 50 champs ta boucle for i = 1 to 50 ne peut pas marcher
tu devrais faire for i = 0 to 49 car dans le premier cas il va tester le 51 champs qui n'existe pas d'où plantage
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

si je reprends à chaque fois ma boucle de 1 à 50 je ne vois pas ce que ça change... car dans ma création je fais for i = 1 to 50
et lors du remplissage je fais
For i = 1 To Nb_Col
     Rc.Fields(i) = "0"
Next

dans les 2 cas ne ne peux avoir que 50 champs...
il me semble... du moin

Merci pour ton attention
:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
dans les 2 cas ne ne peux avoir que 50 champs...

50 oui, mais qu'en est-il de Rc.Fields(i) ?

Rc.Fields(0), existe
Rc.Fields(49), existe
mais Rc.Fields(50) ?
Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

rc!fields(0)= un champs numéro auto...

donc en principe pas besoin de lui dire qu'il est égale à Zéro....

ensuite j'ai fais une erreur au départ en contant mes boucle et non pas les champs créer en fait j'ai compté 50 champs alors qu'il y en à plus de 100 et que il me bub en plein milieu, c'est là que je ne comprends pas...

merci pour ton attention

:)Sator :)

ps: si il ni avait pas de faute d'orthographe dans ce texte, il y a fort à parier que ce texte ne serait pas de moi...