MAJ BASE ACCESS

borgeomi Messages postés 77 Date d'inscription mercredi 20 juin 2001 Statut Membre Dernière intervention 23 juin 2011 - 27 févr. 2006 à 11:13
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 27 févr. 2006 à 17:32
Bonjour

et encore sur le même problème

j'ai touvé sur le NET une solution à
-2147467259 (80004005) Key column information is insufficient or incorrect. Too may rows were

mais j ene sais pas comment l'implémenter

On dit de définir une numéro auto incrémenté et de l'aasigner comme PRIMARY KEY

Voici mon code

Définition de la table


' ==========================================================================
' procédure création d'une table indicée par le numéro de course
' pour leur i course
' ==========================================================================



Public Sub Traitement_création_table_course_indice(strNom_de_table As String, catalogue As ADOX.Catalog)


' On Error GoTo erreur_Traitement_création_table_course_indice
'
Dim MaTable As ADOX.Table
Set MaTable = New ADOX.Table
MaTable.Name = strNom_de_table
With MaTable
.Columns.Append "attribut", adLongVarWChar
.Columns.Append "nombre", adInteger
End With

catalogue.Tables.Append MaTable


Exit Sub
erreur_Traitement_création_table_course_indice: ' traitement des erreurs
End Sub

et maj ou création de poste suivant le cas

Public Sub Traitement_nombre_de_courses_total_course_indice_variable_creation(strNom_de_table As String, catalogue As ADOX.Catalog, sLibelle1 As String, sParametre As String, sLibelle2 As String, variable_transmis As String, sOrdre_select As String, strAttribut_table_cheval_type_enregistrement As String)


' On Error GoTo erreur_Traitement_nombre_de_courses_total_course_indice_variable_creation



Dim MonJeuDenregistrement_table_cheval_type_enregistrement As New ADODB.Recordset

'lie le recorset à la connection
MonJeuDenregistrement_table_cheval_type_enregistrement.ActiveConnection = MaConnection

' Interroge la base pour trouver l'enregistrement nombre de course
Dim champ_table_cheval_type_enregistrement As Field

' variable i
Dim i As Integer

' pour chaque champ dans un enregistrement dans le jeu d'engistrement pour toutes les courses d'un cheval
'
'MonJeuDenregistrement_table_cheval_type_enregistrement.Open "SELECT * FROM [" & strNom_de_table & "] WHERE [" & strNom_de_table & "].[attribut] = '" & sLibelle1 & " " & iNombre_de_courses_courues_nouveau_historique & sLibelle2 & " " & tvariable(sVariable) & "'", , adOpenDynamic, adLockOptimistic
MonJeuDenregistrement_table_cheval_type_enregistrement.Open sOrdre_select, , adOpenDynamic, adLockOptimistic
'
If MonJeuDenregistrement_table_cheval_type_enregistrement.RecordCount > 0 Then
Do While Not MonJeuDenregistrement_table_cheval_type_enregistrement.EOF

For Each champ_table_cheval_type_enregistrement In MonJeuDenregistrement_table_cheval_type_enregistrement.Fields
Debug.Print champ_table_cheval_type_enregistrement.Name & "=" & champ_table_cheval_type_enregistrement.Value
If (champ_table_cheval_type_enregistrement.Name = "nombre") Then
If (champ_table_cheval_type_enregistrement.Value) Then
i = champ_table_cheval_type_enregistrement.Value
Else
i = 0
End If
MonJeuDenregistrement_table_cheval_type_enregistrement![nombre] = i + 1
MonJeuDenregistrement_table_cheval_type_enregistrement.Update
End If
Next
MonJeuDenregistrement_table_cheval_type_enregistrement.MoveNext
Loop
Else
' sinon si non existence du poste dans la table
MonJeuDenregistrement_table_cheval_type_enregistrement.AddNew
'Dim strAttribut_table_cheval_type_enregistrement As String
'strAttribut_table_cheval_type_enregistrement = sLibelle1 & " " & iNombre_de_courses_courues_nouveau_historique & sLibelle2 & " " & tVariable(sVariable)
MonJeuDenregistrement_table_cheval_type_enregistrement![attribut] = strAttribut_table_cheval_type_enregistrement
MonJeuDenregistrement_table_cheval_type_enregistrement![nombre] = 1
MonJeuDenregistrement_table_cheval_type_enregistrement.Update
End If



' Ferme
MonJeuDenregistrement_table_cheval_type_enregistrement.Close




Exit Sub
erreur_Traitement_nombre_de_courses_total_course_indice_variable_creation: ' traitement des erreurs
End Sub




borgeomibonjouuuuuuur !!!!!

1 réponse

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
27 févr. 2006 à 17:32
salut,



le problème doit venir de la création de ta Table avec ADOX car tu ne définis pas de clé primaire.



pour cela il faut ajouter un ADOX.Index à ta table, en paramétrant les propriétés suivantes :

Index.IndexNulls (AllowNullsEnum)

Index.Name (String)

Index.PrimaryKey (Boolean)

Index.Unique (Boolean)

Index.Columns (ADOX.Columns)



tu ajoutes cet Index à la collection d'Index de la Table, cela se fait comme pour ADOX.Column.



par ailleurs, je te
conseille de banir définitivement les caractères accentués de ton code
(hormis les commentaires,bien sûr !), c'est le genre de détail qui peut
te faire perdre des heures entières à retrouver une erreur
inexplicable...

par encore ailleurs, pour la rédaction des messages, conforme-toi aux prescriptions du site (titre explicite, langage, version...), le réglement est ici.




[ Dalida ]<hr>
pensez à indiquer la version du language
0
Rejoignez-nous