borgeomi
Messages postés77Date d'inscriptionmercredi 20 juin 2001StatutMembreDernière intervention23 juin 2011
-
27 févr. 2006 à 11:13
Dalida
Messages postés6728Date d'inscriptionmardi 14 mai 2002StatutContributeurDernière intervention11 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
Dalida
Messages postés6728Date d'inscriptionmardi 14 mai 2002StatutContributeurDernière intervention11 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