Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

alimenter une table d'une base de données access


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    alimenter une table d'une base de données access
    bonjour, je demande de l'aide pour alimenter une table d'une base de données access créée en vb6.
    D'avance merci.

  2. #2
    Rédacteur/Modérateur

    Salut

    Tu peux faire une recherche dans le forum VB6 en indiquant "connexion ADO" ), dans la première page il y a pratiquement tous ce qui faut .

    Il y a aussi dans la FAQ VB6 la rubrique Bases de données.


    On te laisse donc voir les différents liens, essais de nous proposer quelque lignes de code, là on pourra t'aider plus efficacement.

    Édit: le l de salut, c'est mieux que Saut
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  3. #3
    Candidat au Club
    alimenter une table d'une base de données access en vb6
    Bonjour,
    Merci pour les indications.

    Je vous donne le code de la création de la table qui marche:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    ' Module de création de la table
    Sub CreateAccessTable(sDatabaseToCreate)
     
    Dim catDB As ADOX.Catalog
    Dim tblNew As ADOX.table
    Set catDB = New ADOX.Catalog
     
    ' Open the catalog
    catDB.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
    "Data Source=" & sDatabaseToCreate
     
    Set tblNew = New ADOX.table
    tblNew.Name = "ResultLog"
     
    Dim col As ADOX.Column
    Set col = New ADOX.Column
     
    With col
    .ParentCatalog = catDB
    .Type = adInteger '
    .Name = "ID"
    .Properties("Autoincrement") = True
    .Properties("Description") = "I am the Description " & _
    "for the column"
    End With
    tblNew.Columns.Append col
     
    With tblNew
    With .Columns
    .Append "NumberColumn", adInteger
    .Append "FirstName", adVarWChar
    .Append "Rdate", adDate
    .Append "Pati_id", adVarWChar
    .Append "Result", adDouble
    End With
     
    Dim adColNullable '
    adColNullable = 2
    With .Columns("FirstName")
    .Attributes = adColNullable
    End With
    End With
     
    ' Ajout nouvelle table.
    catDB.Tables.Append tblNew
    Set col = Nothing
    Set tblNew = Nothing
    Set catDB = Nothing
    End Sub




    ' Code faisant l'alimentation de la table

    Quand je l'exécute et je vais ouvrir la base de données test (access), les données de la liste ne sont pas prises en compte dans resultlog:


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Dim sDatabaseName As String
    'fName = txtNew.Text
    sDatabaseName = "C:\Test.accdb"
        Dim Cnxn As ADODB.Connection
        Dim rstResultat As ADODB.Recordset
        Dim Accesscmd As New ADODB.Command
        Dim AccessRst As New ADODB.Recordset
        Dim strCnxn As String
        Dim strSQL As String
        Dim nbEnr As Long
        Dim y As Integer
        Dim txtnum, txtnom As String
    Dim db As dao.Database
    Dim Tb As dao.TableDef
    Dim Fd As dao.Field
     
     
     
    'Connection à la base de données Access
    Set Cnxn = New ADODB.Connection
        strCnxn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                   "Data Source=" & MaBase
    Cnxn.Open strCnxn
     
        On Error Resume Next
        Csv_Rst.Delete NomTable
     
        Set rstResultat = New ADODB.Recordset
        strSQL = "select * from resultlog where pati_id >=0"
        rstResultat.Open strSQL, strCnxn, adOpenDynamic, adLockOptimistic, adCmdTable
     
      MsgBox (rstResultat.RecordCount)
     
      If rstResultat.EOF Then
        MsgBox "Fin de fichier"
      Else
        MsgBox "Non fin de fichier"
      End If
     
     
    y = 1
     
    '***********************************
    ' Enregistrement dans la table ResultLog
     
      For i = 0 To List_dos.ListCount - 1
     
            rstResultat.AddNew
            rstResultat!rdate = Left(List_dos.List(i), 10)
            rstResultat!pati_id = Val(Mid(List_dos.List(i), 22, 10))
            rstResultat!numbercolumn = y
            rstResultat!pati_id = Mid(List_dos.List(i), 22, 10)
            rstResultat!result = Mid(List_dos.List(i), 37, 10)
            rstResultat.Update
            y = y + 1
      Next i
     
    rstResultat.Close


    Merci d'avance.

  4. #4
    Rédacteur/Modérateur

    Salut

    Un peu (beaucoup) brouillon ton code d'ajout dans la table, j'ai essayé de nettoyer, cala devrait donner
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
        Dim Cnxn As ADODB.Connection
        Dim rstResultat As ADODB.Recordset
    	Dim sDatabaseName As String
    	sDatabaseName = "C:\Test.accdb"
    	Dim strCnxn
        strCnxn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                  "Data Source=" & sDatabaseName
     
    	Set Cnxn = New ADODB.Connection
    	Cnxn.Open strCnxn
    	If Not Cnxn.EOF Then
    		Set rstResultat = New ADODB.Recordset
    		Dim strSQL As String
    		strSQL = "select * from ResultLog where pati_id >=0" ' ***** ATTENTION, j'ai changé le nom de la table, R majuscule ***
    		rstResultat.Open strSQL, Cnxn, adOpenDynamic, adLockOptimistic, adCmdTable
    		If not rstResultat.EOF Then
    			' Enregistrement dans la table ResultLog
    			Dim y As Integer: y = 1
    			Dim i As Integer
    			For i = 0 To List_dos.ListCount - 1
    				rstResultat.AddNew
    				rstResultat!Rdate = Left(List_dos.List(i), 10)
    				'*** la il faut choisir l'une des 2 ligne suivante ***
    				rstResultat!Pati_id = Val(Mid(List_dos.List(i), 22, 10))
    				rstResultat!pati_id = Mid(List_dos.List(i), 22, 10)
    				rstResultat!NumberColumn = y
    				rstResultat!Result = Mid(List_dos.List(i), 37, 10)
    				'*** tu ne remplis pas le champs FirstName ??? ***
    				rstResultat.Update
    				y = y + 1
    			Next i
    			rstResultat.Close: Set rstResultat = Nothing 
    			Cnxn.Close: Cnxn: Set Cnxn = Nothing
    			Else
    			Cnxn.Close: Cnxn: Set Cnxn = Nothing
    			Msgbox "rstResultat.EOF = True, echec ouverture table ''ResultLog''"
    		End If
     
    		Else
    		Msgbox "Cnxn.EOF = True, echec ouverture base de données ''C:\Test.accdb''"
    	End If
    Comme tu peux le voir, j'ai mis quelque commentaires explicatifs, code non testé, en espérant que tu pourras affiner les éventuels problèmes restant.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  5. #5
    Candidat au Club
    alimenter une table d'une base de données access en vb6
    Bonjour,
    Je reviens pour le code pour alimenter la table.
    Merci pour les indications et encore merci
    Après avoir affiner le code et testé, ça marche toujours pas. Il signale une erreur d'utilisation dans la clause FROM. Si vous pouvez le tester pour vous rendre compte.
    D'avance merci.

  6. #6
    Rédacteur/Modérateur

    Salut

    Tu as déclarer "Pati_id", adVarWChar mais dans ta clause Where tu donnes comme condition un chiffre
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    strSQL = "select * from ResultLog where pati_id >=0"



    Je pense que tu cherches une condition sur le champ ID non pas Pati_id
    Donc
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    strSQL = "select * from ResultLog where ID >=0"

    ou si cela est bien sur le champ [B]Pati_id[B]
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    strSQL = "select * from ResultLog where pati_id ='0'"
    mais ce champ de type litéral ne peut pas être > (plus grand que) ...
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  7. #7
    Candidat au Club
    alimenter une table d'une base de données access en vb6
    re bonjour,
    merci pour la précision.
    j'ai essayé avec ID et pati_id mais il ya toujours le même message d'erreur sur la clause FROM.
    il n'arrive pas à ouvrir la table.
    Merci d'avance.

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par tiendre Voir le message
    re bonjour,
    ....
    il ya toujours le même message d'erreur sur la clause FROM.
    ....
    Merci d'avance.
    Quel message d'erreur ? (N° et message exacte de l'erreur)
    Fais un copier/coller de toute la procédure (Sub) ou se produit l'erreur, n° de la ligne ou se produit l'erreur.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  9. #9
    Candidat au Club
    alimenter une table d'une base de données access en vb6
    quand j'exécute la procédure, sur la ligne:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    rstResultat.Open strSQL, Cnxn, adOpenDynamic, adLockOptimistic, adCmdTable

    cette erreur apparait:
    erreur d'exécution '-2147217900 (80040e14)':

    erreur de syntaxe dans la clause FROM.

  10. #10
    Rédacteur/Modérateur

    Ok
    Essais
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    rstResultat.Open strSQL, Cnxn, adOpenStatic, adLockPessimistic
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  11. #11
    Candidat au Club
    alimenter une table d'une base de données access en vb6
    bonjour,
    Après l'essai, l'alimentation a été effective.
    Merci beaucoup pour votre concours.