Base ACCESS connection ADO

Résolu
the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011 - 20 avril 2007 à 14:54
abderrahimbenaya Messages postés 2 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 8 avril 2008 - 7 mai 2007 à 00:14
déja bonjour tout le monde et merci pour l'aide que vous m'avez déja apporté et pour celui qui viens ...
je vous explique mon problement...
j'ai créer une base qui contient une table T_Client avec les champs ID,nom,prenom et mail. mo champ id est défini comme numerique et le reste comme texte.
j'arrive à rentrer mes client , les supprimer , les modifier ...J'arrive aussi à détecter le fait qu'on rentre un identifiant déja existant dans la base... et je voudrais pouvoir remplacer la personne qui avait l'id détecter par une nouvelle et incrémenter ceux ki sont en dessous de 1
exemple : nous avons un client id=2,nom =paul.
               si on rentre comme nouveau client id=2,nom jean
   on demande si on vx le remplacer paul par jean. si oui , paul passe en id 3 et jean en 2
j'espere que c'est claire
je débute en Vb ( plus habituer au C-builder-) dc j'ai vraiment besoin d'aide... c'est pour mon stage .
je vous remercie d'avance ....

5 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 avril 2007 à 10:44
 Bonjour à tous,

Je suis nul en ADO et SQL, mais je  propose le code ci-dessous (en vbs).

Ma table avant modif:
<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:315pt;
height:147pt'>
<v:imagedata src="file:///C:\DOCUME~1\ollivier\LOCALS~1\Temp\msohtml1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->T_Client

, ----
ID

, nom

, prénom

, mail

, ----
1, JEAN, jean (prenom), jean (mail), ----
2, PIERRE, pierre(prenom), pierre(mail), ----
3, PAUL, paul (prenom), paul (mail), ----
4, JACQUES, jacques (prenom), jacques (mail), ----
5, CLAUDE, claude(prenom), claude(mail), ----
6, SOPHIE, sophie (prenom), sophie (mail), ----
7, ISABELLE, isabelle(prenom), isabelle(mail)

Ma table après modif:
T_Client

, ----
ID

, nom

, prénom

, mail

, ----
1, JEAN, jean (prenom), jean (mail), ----
2, PIERRE, pierre(prenom), pierre(mail), ----
3, PAUL, paul (prenom), paul (mail), ----
5, JACQUES, jacques (prenom), jacques (mail), ----
6, CLAUDE, claude(prenom), claude(mail), ----
7, SOPHIE, sophie (prenom), sophie (mail), ----
8, ISABELLE, isabelle(prenom), isabelle(mail), ----
4, JEAN-MARC, jean-marc (prénom), jean-marc (mail)

Option Explicit
'
'Valeurs de Type Curseur
'-----------------------Const adOpenForwardOnly 0, adOpenKeyset 1, adOpenDynamic = 2, adOpenStatic = 3
'
'Valeurs de Type Verrou
'----------------------Const adLockReadOnly 1, adLockPessimistic 2, adLockOptimistic = 3, adLockBatchOptimistic = 4
'
Const Path_Base = "D:\Mes_scripts_VBFrance\Test\the_little_big_man.mdb"
Const MaTable = "T_Client"
'
Dim strID, strNom
strID = 4
strNom = "JEAN-MARC"
'
Call UpdateMDB(strID, strNom)

Sub UpdateMDB(strID, strNom)
Dim Db, Rs, strAccess, reponse, i
Set Db = CreateObject("ADODB.Connection")
strAccess = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Path_Base
Db.Open(StrAccess)

Set Rs = CreateObject("ADODB.Recordset")
Rs.CursorType = adOpenStatic
Rs.LockType = adLockOptimistic
Rs.Open "SELECT * FROM " & MaTable & " ORDER BY ID", strAccess

If Rs.EOF = False Then
   Rs.MoveFirst
   do while not Rs.EOF

      If Rs.Fields("ID") = strID Then
         If Rs.Fields("nom") <> strNom Then
       
            reponse = MsgBox("Voulez-vous attribuer ID=" & strID & " pour nom=" & _
                             strNom & " et incrémenter les ID suivantes ",vbYesNo, _
                             "ID=" & Rs.Fields("ID") & " existe déjà mais nom=" & Rs.Fields("nom"))
     
            If reponse = vbNo Then Exit Do
     
            'MsgBox Rs.RecordCount,,"Nombre de RecordSet"
            For i=strID To Rs.RecordCount
                Rs.Fields.Item("ID").Value = Rs.Fields.Item("ID")+1
                Rs.Update
                Rs.MoveNext    
            Next 
            Rs.AddNew
            Rs.Fields("ID").Value = strID
            Rs.Fields("nom").Value = strNom
            Rs.Fields("prénom").Value = InputBox("Veuillez saisir le prénom de " & strNom) 
            Rs.Fields("mail").Value = InputBox("Veuillez saisir l'adresse mail de " & strNom) 
            Rs.Update
            Exit Do  
         End If
      End If
      Rs.MoveNext
   Loop
End If

Rs.Close
Db.Close
Set Rs = Nothing
Set Db= Nothing
End Sub

 A toi de rajouter le test de vérification sur l'existence dans la table de strNom

jean-marc
3
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 15:04
Salut, montre le code STP car partir de rien, ca m'enchante pas trop merci.
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
20 avril 2007 à 15:56
Salut the_little_big_man ,

Effectivement, comme le dit Nicko11, il faudrait avoir un peu plus de détail de code, pour avoir une réponses précise de la part des menbres qui regardent le post...
A+
Exploreur

 
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
20 avril 2007 à 16:00
y a qu'a voir, 28 lu, 2 reponses.

Allez Exploreur plus qu'un message pour passer le rodage LOL.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
abderrahimbenaya Messages postés 2 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 8 avril 2008
7 mai 2007 à 00:14
merci
0
Rejoignez-nous