Problèmes de base, avec ADO

Résolu
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006 - 1 juin 2006 à 09:20
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006 - 1 juin 2006 à 13:43
Bonjour à tous,

Je suis actuellement en stage et doit développer une application capable de gérer une base de donnée (lecture/écriture), mais voila je n'y connais rien du tt en visual basic et je galère comme un porc !!!
Enfin je fourni mon source actuel afin que l'on me dis comment effectuer d'une part un enregistrement mais aussi une lecture

Merci de votre attention , je suis vraiment dans la galère !!

Option Explicit
  Dim db As Database
  Dim Rs As Recordset
  Dim tdf As TableDef
 
 
Private Sub Command2_Click()
  Dim DateJour As Date
  Dim DateMax As Date
  Dim DateNull As Date
  Dim StrDateJour As String
  Dim NumOf As String
  Dim ValCpt As String
  Dim LigneTab As Integer
  Dim openDB As Integer
  openDB = OuvreDB()
  LigneTab = 1
  DateMax = #12/31/9999#
  
  'Stockage date
  StrDateJour = Text1.Text
  'test validité
  If StrDateJour = "" Then
    MsgBox "Date incorrect"
    Exit Sub
  End If
  'transforme en type date dans DateJour
  DateJour = CDate(StrDateJour)
  If DateJour > DateMax Then
    MsgBox "Date non valide"
    Exit Sub
  End If
  NumOf = Text2.Text
  If NumOf = "" Then
    MsgBox "Numéro OF invalide"
    Exit Sub
  End If
  ValCpt = Text3.Text
  If Text3.Text = "" Then
    MsgBox "Valeur incorrect"
    Exit Sub
  End If
  Set Rs = db.OpenRecordset("CompteurRebuts", dbOpenDynaset)
 
 
  'écrir dans bdd---------------------------------------------------------------------------------------
  'La date
  db.Execute "UPDATE CompteurRebuts SET DateJour=" & Chr(34) & DateJour & Chr(34) & " WHERE Auto=" & LigneTab
  'Le num Of
  db.Execute "UPDATE CompteurRebuts SET NumOf=" & Chr(34) & NumOf & Chr(34) & " WHERE Auto=" & LigneTab
  'Valeur du compteur
  db.Execute "UPDATE CompteurRebuts SET CompteurRebut=" & Text3.Text & " WHERE Auto=" & LigneTab
  db.Close
  LigneTab = LigneTab + 1
End Sub


Private Sub Form_Load()
Dim sqldate As String
Dim sqlcompt As String


'-------------------------------------------------------------------------------------------------------
'Ouverture R/W + affichage dernière modif
Set db = OpenDatabase("C:\Documents and Settings\CalderonN\Base de donnée\bdCompteurRebut1.mdb", True, False)
MsgBox "Base de Donnée " & db.Name & " ouverte et prête (en R/W) !! "
sqldate = "SELECT Max(DateJour)FROM CompteurRebuts"
Set Rs = db.OpenRecordset(sqldate, dbOpenSnapshot)
Text4.Text = Rs.Fields(0)
Rs.Close
db.Close
Set db = OpenDatabase("C:\Documents and Settings\CalderonN\Base de donnée\bdCompteurRebut1.mdb", True, False)
sqlcompt = "SELECT DateJour,CompteurRebut FROM CompteurRebuts Where DateJour=" & Text4.Text
Set Rs = db.OpenRecordset(sqlcompt, dbOpenSnapshot)
Text5.Text = Rs.Fields(0)

End Sub

comme vous avez pue le constater j'utilise update pour écrire dans ma base de donnée (perso je pense qu'il y a un autre moyen ) et par contre je ne sais pas du tout comment effectuer une lecture.  Le message d'érreur des "Pas d'enregistrement courant".

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juin 2006 à 12:05
il faut formater ta date :

"SELECT NumOF FROM CompteurRebuts WHERE DateJour=" & Format$ ( Text4.Text  , "\#MM\/DD\/YYYY\#")

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juin 2006 à 09:36
comment se fait-il que tu ne connaisse rien à VB et que tu soit en stage pour faire du VB ?

inutile de fermer ta connexion, pour le rouvrir de suite....

Set Rs = db.OpenRecordset(sqldate, dbOpenSnapshot)
Text4.Text = Rs.Fields(0)
Rs.Close
db.Close 
Set db = OpenDatabase("C:\Documents and Settings\CalderonN\Base de donnée\bdCompteurRebut1.mdb", True, False)
sqlcompt = "SELECT DateJour,CompteurRebut FROM CompteurRebuts Where DateJour=" & Text4.Text
Set Rs = db.OpenRecordset(sqlcompt, dbOpenSnapshot)
If Not RS.EOF Then   '# Un simple test suffit....
    Text5.Text = Rs.Fields(0)
End If

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 10:01
Et bien en éffé je suis 1er année de bts iris et je doit faire un stage obligatoire et mes prof m'onassuré que j'été capable de développé sur vb et access avec les connaissance que j'avais (c,c++, sql sur Turbo c et Builder)

Oui je sais que c'est inutile mais c'est ce que j'ais trouve de mieu a faire pour le message d'erreur !!

Enfin le trucl qui me pose pb c'est que je n'arrive pas a afficher un autre champ(compteurRebut) de ma base de donnée en fonction de celui que je vient de rechercher Max(DateJour)

Private Sub Form_Load()
Dim sqldate As String
Dim sqlcompt As String


'-------------------------------------------------------------------------------------------------------
'Ouverture R/W + affichage dernière modif
Set db = OpenDatabase("C:\Documents and Settings\CalderonN\Base de donnée\bdCompteurRebut1.mdb", True, False)
MsgBox "Base de Donnée " & db.Name & " ouverte et prête (en R/W) !! "
sqldate = "SELECT Max(DateJour) FROM CompteurRebuts"
Set Rs = db.OpenRecordset(sqldate, dbOpenSnapshot)
If Not Rs.EOF Then   '# Un simple test suffit....
    Text4.Text = Rs.Fields(0)
End If
sqlcompt = "SELECT DateJour,CompteurRebut FROM CompteurRebuts Where DateJour=" & Text4.Text
Set Rs = db.OpenRecordset(sqlcompt, dbOpenSnapshot)
If Not Rs.EOF Then   '# Un simple test suffit....
    Text5.Text = Rs.Fields(0)
End If
End Sub

Plus de message d'erreu mais rien dans mon Tex5.Text
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 10:22
De plus j'ai un autre problèùe qui est que quand je saisie des valeurs dans vb cette ensemble de donnée devrai s'ajouter a la suite dans la base de donnée masi non elle écrase la première ligne !!

surement parce que j'utilise :

db.Execute "UPDATE CompteurRebuts SET DateJour=" & Chr(34) & DateJour & Chr(34) & " WHERE Auto=" & LigneTab

Dans mon code :

Private Sub Command2_Click()
  Dim DateJour As Date
  Dim DateMax As Date
  Dim DateNull As Date
  Dim StrDateJour As String
  Dim NumOf As String
  Dim ValCpt As String
  Dim LigneTab As Integer
  Dim openDB As Integer
  LigneTab = 1
  DateMax = #12/31/9999#
  
  'Stockage date
  StrDateJour = Text1.Text
  'test validité
  If StrDateJour = "" Then
    MsgBox "Date incorrect"
    Exit Sub
  End If
  'transforme en type date dans DateJour
  DateJour = CDate(StrDateJour)
  If DateJour > DateMax Then
    MsgBox "Date non valide"
    Exit Sub
  End If
  NumOf = Text2.Text
  If NumOf = "" Then
    MsgBox "Numéro OF invalide"
    Exit Sub
  End If
  ValCpt = Text3.Text
  If Text3.Text = "" Then
    MsgBox "Valeur incorrect"
    Exit Sub
  End If
  Set Rs = db.OpenRecordset("CompteurRebuts", dbOpenDynaset)
  'écrir dans bdd---------------------------------------------------------------------------------------
  'La date
  db.Execute "UPDATE CompteurRebuts SET DateJour=" & Chr(34) & DateJour & Chr(34) & " WHERE Auto=" & LigneTab
  'Le num Of
  db.Execute "UPDATE CompteurRebuts SET NumOf=" & Chr(34) & NumOf & Chr(34) & " WHERE Auto=" & LigneTab
  'Valeur du compteur
  db.Execute "UPDATE CompteurRebuts SET CompteurRebut=" & Text3.Text & " WHERE Auto=" & LigneTab
  db.Close
  LigneTab = LigneTab + 1
End Sub

Ca doit te semblé brouillon mais c'est le cas désolé je suis vraiment nood sur vb koi !! je m'informe comme je peut, je pêche des info un pe partout faud dire !!

voila en ce moment je suis sur mon lieu de travail !! (le bad)
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juin 2006 à 10:45
tu utilise une requete de mise a jour.... rien d'étonnant a ce que ca remplace ton contenu.
pour ajouter des enregistrements, utilisement une requete INSERT INTO

ou fais joujou avec ton RecordSet (RS.AddNew ....)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 10:50
lol oki d'accor dje me doutai que ca venais de ca mais pour ce qui est de faire joue joue avec le recordset......... je sais pas trops ce que ca signifie !!

En gros ca ve dire quoi quand on met RS.AddNew ?
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 11:15
voila j'ais une foix de plus recommencer mon projet vb et j'ais mis comme source ca :

Private Sub Command2_Click()
tb.Open "SELECT * FROM CompteurRebuts", bd, adOpenDynamic, adLockOptimistic
tb.AddNew
If Text1.Text = tb!DateJour Then 'si existe déjà
  MsgBox "Changer de date"
  Exit Sub
End If
If Text1.Text = "" Then    '# si non saisie
  MsgBox "Date incorrect"
  Exit Sub
End If
tb![DateJour] = Text1.Text 'écrire date
If Text2.Text = "" Then    '# si non saisie
    MsgBox "Numéro OF invalide"
    Exit Sub
  End If
tb![NumOf] = Text2.Text   'écrire Of
If Text3.Text = "" Then   '# si non saisie
  MsgBox "Valeur incorrect"
  Exit Sub
End If
tb![Compteur] = Text3.Text    '# écrire valeur compteur


tb.Update


tb.Close
bd.Close
Set tb = Nothing
Set bd = Nothing
End Sub

Ce qui me permet d'ajouter mes valeur ce qui est cool.
Maintenant le truck c'est que je doit faire l'ajout uniquement si la date n'est pas la même, quel serrai la condition ?
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 11:26
If Text1.Text = tb!DateJour Then 'si existe déjà
  MsgBox "Changer de date"
  Exit Sub
End If

ne marche pas car a mon avis je n'ais pas fait de recherche sur le champ date avant, si tu pe confirmé et m'expliquer comment je doit m'y prendre !!
Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juin 2006 à 11:27
tu peux faire un RS.Cancel... avant tes Exit Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 11:51
Sorry mais je comprend pas.........

 je vais foiré mon stage et me planter dasn mon rapport
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 11:58
Sérieux je doit tesaouler un peut avec ces question a la *** mais voila j'ais vraiment besoind d'un coup de main !!

Lorsque je ve afficher la date ca marche mais pour les autre ca marche pas tu pe me dire pk ?
Merci man et ca fait plasir de trrouvé des personne qui s'y connaisse...
Private Sub Command1_Click()
tb.Open "SELECT Max(DateJour) FROM CompteurRebuts", bd, adOpenDynamic, adLockOptimistic
If Not tb.EOF Then
Text4.Text = tb.Fields(0)
End If
tb.Close
tb.Open "SELECT NumOF FROM CompteurRebuts WHERE DateJour=" & Text4.Text, bd, adOpenDynamic, adLockOptimistic
If Not tb.EOF Then
Text5.Text = tb.Fields(0)
End If
tb.Close
tb.Open "SELECT Compteur FROM CompteurRebuts WHERE DateJour=" & Text4.Text, bd, adOpenDynamic, adLockOptimistic
If Not tb.EOF Then
Text5.Text = tb.Fields!Compteur
End If
tb.Close
End Sub
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 13:11
Merci mec ca marche j'arrive a afficher mes infos dans mes TextBoxs yéééé ca roxx ca alors !!

Je pense avoir d'autre pb au cour de la journée, je peut tj te demander si j'ais besoin ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
1 juin 2006 à 13:37
Erreur.... tu ne ME demande rien... tu poses simplement une question sur le Forum.
Si tu as d'autres questions, utilise un nouveau topic...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_popo51 Messages postés 38 Date d'inscription lundi 14 février 2005 Statut Membre Dernière intervention 6 juin 2006
1 juin 2006 à 13:43
OK ok d'accord pas de pb c'est ce que je pensé faire, mais de tt tu pourra tj me répondre sur un nouveau topic enfin j'espère !!

Merci encore et votre sites et bien fait je trouve plein d'info dessus !!
0
Rejoignez-nous