Aide pour un nouveau : en ADO!!! Merci

Résolu
Little_Dev Messages postés 36 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 4 mars 2008 - 2 nov. 2004 à 13:04
Little_Dev Messages postés 36 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 4 mars 2008 - 2 nov. 2004 à 15:13
Bonjour,

Je debute en ADO et VB6, j'ai develloppé quelque application basic.

Mon probleme est le suivant je ne maitrise pas l'accés au données.

Effectuer un SELECT pas de probleme, mais dés que je veux faire un DELETE,UPDAT ou INSERT via une procédure stocké sur une base Access 2000.
C'est la que sa coince je n'y arrive meme en suivant les conseils de certain membre de cet excellent site, ça fonctionnne pour mon apllication mais je n'ai pas tout compris la logique et sutout pourquoi VB m'agresse en m'envoyant des messages d'erreurs. (c'est rageant...)

Si quelqu'un serait assez aimable pour m'indiquer un excellent cours avec des exemples qui marche (autre que MSDN) pour pouvoir effectuer mes transaction via un recorset et des procédures stockées (Type:Updat,insert,...)

Je remercie les personnes qui porte de l'attention a mon article et 2 fois plus à ceux qui me repondre.

Merci.

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
2 nov. 2004 à 13:12
J'ai fait un tutorial sur DAO (c'est quasiment les mêmes instructions pour ADO) que j'ai déposé sur www.ProgOtoP.com, il devrait t'interesser je pense.

Sinon, regarde bien si tout les champs obligatoires sont renseignés, si tu as fait un AddNew avant de faire un Update, etc.
_______________________________________

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
3
Little_Dev Messages postés 36 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 4 mars 2008
2 nov. 2004 à 14:18
Je te remercie pour le lien je vais voir de ce pas.

Mes champs sont bien renseignés mais mon gros probleme c'est que je ne sais pas vraiment faire exatement , je fais que de la bidouille, je te confere mon code (la chaine de connexion est declaré dans une autre interface):

' Variables pour la gestion de la base de données
Public My_Cnx As New ADODB.Connection 'Connection à la base de données
Public My_Cmd As New ADODB.Command 'Commande sur la base de données
Public My_Rs As ADODB.Recordset 'Enregistrement des données de la base de données
Private My_Prm As ADODB.Parameter 'Déclaration d'un paramatre pour une procedure stockée
Public Bln_Db_Null As Boolean

' Module permettant la connexion à la base de données
Public Sub P_Cnx_Db(ByVal Str_Nom_Proc As String, _
Optional ByVal Str_Nom_Param As String, _
Optional ByVal Str_Where As String)
If Str_Where = Empty Then
Call P_Command(Str_Nom_Proc)

Call P_RecordSet
Else
Call P_Command(Str_Nom_Proc)

Call P_Param(Str_Nom_Param)

P_RecordSet

My_Cmd.Parameters.Append My_Prm
My_Cmd(Str_Nom_Param).Value = Str_Where
End If
'Permet de gérer l'erreur si le process n'existe pas dans la DB
On Error GoTo My_Rs_Is_Null
Set My_Rs = My_Cmd.Execute If My_Rs.RecordCount 0 Then Bln_Db_Null True
Exit Sub
My_Rs_Is_Null:
Bln_Db_Null = True
End Sub

Private Sub P_Command(ByVal Str_Nom_Proc As String)
' Configuration de la commande
With My_Cmd
.ActiveConnection = My_Cnx
.CommandType = adCmdStoredProc
.CommandText = Str_Nom_Proc
End With
End Sub

Private Sub P_Param(ByVal Str_Nom_Param As String)
' Configuration du parametre
Set My_Prm = New Parameter
With My_Prm
.Direction = adParamInput
.Type = adVarWChar
.Size = 50
.Name = Str_Nom_Param
.
End With
End Sub

Private Sub P_RecordSet()
' Configuration du record
Set My_Rs = New Recordset
With My_Rs
.ActiveConnection = My_Cnx
.Properties("IrowsetIdentity") = True
.CursorType = adOpenKeyset
.LockType = adLockPessimistic
End With
End Sub

Ce bout de code fontionnne seulement pour un SELECT,et voila comment j'effectue un UPDAT en ajoutant cette procedure:

Public Sub P_Update_Process(ByVal Str_Pross As String, ByVal Str_Distri As String, _
ByVal Str_Cmnt As String)
Dim Str_Sql_Updat As String
Call P_Command("Prc_Update")

Call P_Param("Str_Nom_Process")
Call P_Param("Str_Distri")
Call P_Param("Str_Cmnt")
Call P_Param("Int_Ind")

My_Cmd.Parameters.Append My_Prm
My_Cmd("Str_Nom_Process").Value = Str_Pross
My_Cmd.Parameters.Delete (0)

My_Cmd.Parameters.Append My_Prm
My_Cmd("Str_Distri").Value(1) = Str_Distri
My_Cmd.Parameters.Append My_Prm
My_Cmd("Str_Cmnt").Value(2) = Str_Cmnt
My_Cmd.Parameters.Append My_Prm
My_Cmd("Int_Ind").Value(3) = My_Rs.Fields("Ind")

My_Cmd.Execute

My_Cnx.Execute Str_Sql_Updat, , adExecuteNoRecords

End Sub

Et c'est la que ça coince à chaque fois et je me prends la tete.
0
Little_Dev Messages postés 36 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 4 mars 2008
2 nov. 2004 à 15:13
Je viens de visiter ton site.

Il super bien fais et facile de navigation (j'adore).

Je viens de finir ton cours sur DAO et effectivement cela rejoint le morceaux de code que j'ai deja etudié, normalement je dois me debrouiller sans trop de soucis (je pense)

Et si tu as une critique à faire sur mon code n'hésite pas cela me permetta de m'ameliorer.

Et encore une fois merci pour l'info.

Et felicitation pour le site dont tu es responsable, il tout simplement genial.
0
Rejoignez-nous