Recordset

Signaler
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010
-
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010
-
bonjour voila plusieur jour que je cherche je suis un debutant
j'ai dans un tableau access  des données
je veux verifier si une date exite et si elle exite interdire sont enrgitrement dans le tableau
la date que je prend en reference est donne par un label or meme si la date  exite pas il me dit quelle exite donc j'ai ete sur des forums et j'ai essayer avec currentdb mais se mot n'est pas reconnu comme mot cle
 
 Sub controldate()
Dim a As Date
Dim b As Date
Dim datechercher As Date
datechercher = Format((frmcalendrier.Label8(0).Caption), ("dd/mm/yy"))

frmcalendrier.Adodc1.Recordset.Find "dates=" & datechercher, , adSearchForward, 1
Do While Not frmcalendrier.Adodc1.Recordset.EOF
MsgBox "date-->" & frmcalendrier.Adodc1.Recordset!dates

frmcalendrier.Adodc1.Recordset.Find "dates=" & datechercher, 1, adSearchForward
Loop
  frmcalendrier.Text1.Text = Format((datechercher), ("dd/mm/yy"))
b = Format((frmcalendrier.Label8(0).Caption), ("dd/mm/yy"))

frmcalendrier.Text2.Text = Format((b), ("dd/mm/yy"))
 If datechercher = b Then
 
 MsgBox "Impossible D'ajouter le  jour est  deja utilisé!"
 frmcalendrier.donne1.Text = ""

End If

End Sub

8 réponses

Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Salut,

Et si tu essayais de faire une requête sql du type :
"select date from latable where date = ' "tonlabel.text" ';
pour ensuite testé le nombre d'enregistrement contenu dans ton recordset (monrecordset.count).

Si le count = 1, la date est prise sinon c'est ok tu peux l'enregistrer.

J'espère t'avoir aidé @+
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010

la j'ai du mal
au fait il faudrait qu'il control que si ma date est present donc true il n'enregistre pas
j'ai essayer mais je rame
 
Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Salut,

tu as ceci dans ton code :

Do While Not frmcalendrier.Adodc1.Recordset.EOF
MsgBox "date-->" & frmcalendrier.Adodc1.Recordset!dates

frmcalendrier.Adodc1.Recordset.Find "dates=" & datechercher, 1, adSearchForward
Loop

Cela ne sert à rien puisque tu veux testé si une date est prise par 1 et 1 seul enregistrement (de ce que j'ai compris).

Là tu fais une boucle Tant que tu as des enregistrements or il faut que tu testes si une date existe donc la requête la plus appropriée est celle que je t'ai indiqué

"select date from latable where date = ' "tonlabel.text" ';

Ensuite tu testes si ton recordset à un enregistrement si le recordset à un enregistrement, la date est prise (logique) donc ton true est retourné si tu veux. Sinon il est à 0 donc tu peux ajouter l'enregistrement. 

De ce que je vois, tu es dans une sub (procédure) pas dans une function (...fonction) donc tu ne retourne pas de résultat (true ou false).

Maintenant essaye d'être plus precis. As tu des erreurs ? ou ? quel est le message ? Que ligne ? ton code est il le même ? Met le nouveau,.... Ce type de renseignements pourra aider les personnes du forum à répondre rapidement et précisément à tes attentes.

bon dev, @+
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010

BONJOUR  et merci de de ton aide
voila la essais sa
Sub controldate()

Dim rst As Recordset

   

Dim datechercher As Date
datechercher = Format((frmcalendrier.Label8(0).Caption), ("dd/mm/yy"))Set rst frmcalendrier.Adodc1.Recordset("SELECT dates FROM compteur1 " & "WHERE dates 'datechercher';")
   
   

 MsgBox "Impossible D'ajouter le  jour est  deja utilisé!"
 frmcalendrier.donne1.Text = ""
 

End Sub

je suis pas sur de se que je fait et sa me donne
impossible de trover lobjet  dans la collection corespondant au nom ou a la reference ordinale demandé j'ai uttilisé la fonction aide f1 pour where
Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Oui OK. Plusieurs problèmes.

Pour la requête ça marchera mieux comme ça :

frmcalendrier.Adodc1.Recordset("SELECT dates FROM compteur1 WHERE dates = ' " & datechercher & " ';").

Attention tu veux la valeur de datechercher et nom le texte "datechercher"

Ensuite dans ta base de données de quel type le champs "dates" : datetime, char(x) ?

Si c'est du char(x), ça suffit :  dim datechercher as string  = frmcalendrier.Label8(0).Caption
sinon fait  cdate(Label8(0).caption) ça doit passer. Est tu sur que datechercher comme tu les récupère est bon ? (Vérifie avec une msgbox s'il le faut.

@+
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010

bonlour  la il me met utilisation incorect de la proprieté  en bleu le debogueur me met  recordset

Dim datechercher As String
datechercher = CDate(frmcalendrier.Label8(0).Caption)
frmcalendrier.Adodc1.Recordset ("SELECT dates FROM compteur1 WHERE dates = ' " & datechercher & " ';")
Messages postés
200
Date d'inscription
mardi 17 octobre 2006
Statut
Membre
Dernière intervention
24 mars 2012
2
Salut, tu sais il y a plein d'exemples sur le forum regarde là http://vbfrance.com/codes/GESTION-IMMEUBLE-VB-ACCESS_31330.aspx

@+
Messages postés
14
Date d'inscription
samedi 24 mars 2007
Statut
Membre
Dernière intervention
6 février 2010

bonjour c'est encore moi j'essai de comprende quand je mmet une date sa marche
Private Sub Form_Load()
Dim b, d
Dim sql As String
Dim cnx As ADODB.Connection
b = Now
Dim ntx
Dim rst As ADODB.Recordset
Set cnx = New ADODB.Connection
Label1.Caption = Format((b), ("dd/mm/yy"))
d = CDate(Label1.Caption)
Set rst = New ADODB.Recordset
Text2.Text = d

cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = "C:\compteur temp\bd1.mdb"
cnx.Opensql "SELECT  dates FROM compteur1 WHERE dates #22/12/2007# "
rst.Open sql, cnx

 If rst.EOF Then
rst.Close
rst.Open

MsgBox ("date ok")
 

Else
MsgBox ("date deja utiliser")
ntx = rst!dates
Text1.Text = ntx
End If

End Sub

donc apres j'essai avec la date recupere dans un label
Private Sub Form_Load()
Dim b, d
Dim sql As String
Dim cnx As ADODB.Connection
b = Now
Dim ntx
Dim rst As ADODB.Recordset
Set cnx = New ADODB.Connection
Label1.Caption = Format((b), ("dd/mm/yy"))
d = CDate(Label1.Caption)
Set rst = New ADODB.Recordset
Text2.Text = d

cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = "C:\compteur temp\bd1.mdb"
cnx.Opensql "SELECT  dates FROM compteur1 WHERE dates '" & d & "'"
rst.Open sql, cnx

 If rst.EOF Then
rst.Close
rst.Open

MsgBox ("date ok")
 

Else
MsgBox ("date deja utiliser")
ntx = rst!dates
Text1.Text = ntx
End If

End Sub
il me marque type de donnée incompatible dans lexpression du critére
poutant quand je regarde le text2 j'ai bien 22/12/2007