cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDernière intervention 6 juin 2006
-
1 juin 2006 à 09:20
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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".
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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 ....)
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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 !!
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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 ?
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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
cs_popo51
Messages postés38Date d'inscriptionlundi 14 février 2005StatutMembreDerniè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