Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/03/2011, 13h55   #1
Invité de passage
 
Inscription : mars 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 8
Points : 1
Points : 1
Par défaut Problème de Recordcount

Bonjour à tous,

je reviens ici car j'ai un petit problème avec un recordcount

J'ai deux combobox (une avec un numéro, l'autre avec une date)
J'aimerai que quand on choisi un numéro et une date et quand on appuis sur le bouton valider, ca compare le numéro et la date saisie a ma base de donnée. et en fonction de si ca existe ou non ca m'envoie un message d'erreur.

Voici mon code utilisé :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Dim db As DAO.Database
Dim RST1 As DAO.Recordset
 
    Set RST1 = CurrentDb.OpenRecordset("select * from LIVRAISON where numero = '" & Me.ComboBox5 & "' and date_livraison = '" & Me.ComboBox6 & "'")
 
If RST1.RecordCount <> 0 Then
    DoCmd.Close
    DoCmd.OpenForm ("LIGNELIVRAISON")
Else
    MsgBox ("Le numero de livraison n'existe pas avec cette date")
End If
Exit Sub
l'erreur est : Type de donnée incompatible dans l'expression du critère
Je pense que c'est un problème a cause de la combobox6 qui est sous forme jj/mm/aaaa mais je ne sais pas comment faire.

Merci d'avoir pris le temps de me lire
stikmou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 14h15   #2
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
ajoute simplement des "#" autour de ta date cela devrais suffire.

Code :
(...) and date_livraison = #'" & Me.ComboBox6 & "#'")
sinon recode ta date suivant le format de date universel
Le format de date universel est #aaaa-mm-jj hh:mm:ss#. Toutefois, le composant date (#aaaa-mm-jj#) et le composant heure (#hh:mm:ss#) peuvent être représentés séparément.

pierre
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 14h24   #3
Invité de passage
 
Inscription : mars 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 8
Points : 1
Points : 1
Merci pour votre reponse aussi rapide, mais juste avec les #, cela ne focntionne pas.
Quand vous dites : "recode ta date", est ce que je dois faire ceci
Code :
Combobox6.Text = Format(Date, "aaaa-mm-yy")
avant mon recordset ? Je ne comprends pas trop.

A vrai dire je suis complètement paumé dès qu'il s'agit d'une date :/
stikmou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 14h57   #4
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 584
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 584
Points : 2 143
Points : 2 143
Bonjour,
Citation:
Set RST1 = CurrentDb.OpenRecordset("select * from LIVRAISON where numero = '" & Me.ComboBox5 & "' and date_livraison = '" & Me.ComboBox6 & "'")
Tout d'abord est ce que numero est bien en format Texte (si c'était un mérique il ne faut pas encadrer la valeur par des ' )

Ensuite pour comparer ta date : utilise par exemple une commande Format()

donc
Code :
 ... "' and format(date_livraison,'yymmdd') = '" & format(Me.ComboBox6,"yymmdd") & "'")
Attention : respecte bien les ' et les "

A la place, tu aurais pu utiliser une fonction de domaine :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
dim nb as long
 
    nb  = Dcount("*","LIVRAISON","numero = '" & Me.ComboBox5 _
"' and format(date_livraison,'yymmdd') = '" & format(Me.ComboBox6,"yymmdd") & "'")
 
If nb > 0 Then
    DoCmd.Close
    DoCmd.OpenForm ("LIGNELIVRAISON")
Else
    MsgBox ("Le numero de livraison n'existe pas avec cette date")
End If
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/03/2011, 15h10   #5
Invité de passage
 
Inscription : mars 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 8
Points : 1
Points : 1
Merci micniv, ta solution avec le formatage fonctionne très bien.

Merci pour votre rapidité
stikmou08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h51.


 
 
 
 
Partenaires

Hébergement Web