Création
d'entreprise
Posez votre question Signaler

Access: erreur sur requete

guillaume - Dernière réponse le 5 août 2008 à 16:08
bonjour

j'ai actuellement un problème lors de l'execution d'une requete de
selection programmée en VB et je souhaiterai volontier un peu d'aide. je vous remercie d'avance.

je vous expose la situation:
dans un formulaire access j'ai une zone de liste déroulante ou je choisi le code d'une céréale. j'aimerai récupéré la quantité total livree de cette cereale se trouvant dans une table afin d'eviter a l'utilisateur de dépasser cette limite. mais j'ai malheureusement un probleme lors de l'execution de la requete.

voici la requete:
Private Sub code_cereale_vente_Change()
Dim req As String
Dim base As Database
Dim enreg As Variant
Dim qte As String

Set base = CurrentDb
req = "SELECT sum(livrer.quantite_livree)as qte_stock FROM livrer " _
& "WHERE livrer.code_cereale_livrer = " _
& "('" & Forms![saisie_vente]![code_cereale_vente] & "');"
(*) Set enreg = base.OpenRecordset(req)
With enreg
.MoveLast
qte = enreg![qte_stock]'
End With
qte_dispo.Value = Str(qte)
End Sub

(*) une erreur se produit a cette endroit:

erreur d'execution 3464
type de données incompatible dans l'expression du critère

dsolé pour la longueur et encore merci de votre aide.
Lire la suite 

Access: erreur sur requete »

23 réponses
Réponse
+0
moins plus
Salut,

essaye de définir enreg en recordset et non en variant...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
guillaume - 30 oct. 2003 à 19:59
désolé j'ai déjà essayé mais y a rien à faire c'est toujours le même message d'erreur qui revient. j'ai essayé d'utiliser la conversion mais ca marche pas non plus. 'code_cereale_vente' est bien du numerique dans ma table et ' livrer.quantite_livree' aussi. merci qd meme

guillaume
Ajouter un commentaire
Réponse
+0
moins plus
Si code céréale est du numérique pourquoi il est entre simple quote, il ne devrait pas, ni entre parenthèses d'ailleurs...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Ajouter un commentaire
Réponse
+0
moins plus
ben g essayé et c vrai qu'il ne fallait pas les cotes et les parenthese merci.
mais y a tjr ce message qui revient meme en changeant la requete.

"SELECT date_livraison as qte_stock FROM livrer WHERE livrer.code_cereale_livrer = 1;"

gv essayé avec une autre table pour voir si il y a le meme probleme en cherchant un nom.
normalement i devrai pas i avoir d'incompatibilité!!

jte remerci Blux


" toute aide est bonne à prendre...
... sauf la mienne!!     @+   ;-)-|-< "
Ajouter un commentaire
Réponse
+0
moins plus
Tu as remis 'enreg' en recordset ?
Normallement, tu ne dois pas le décrire en variant.

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
Ajouter un commentaire
Réponse
+0
moins plus
pouaaah ca marche! t un génie Blux.
i fallait juste que je mette enreg en variant parce que ca marche pas en recordset sous access 2000.
merci encor

toute aide est bonne à prendre...
... sauf la mienne!!     @+   ;-)-|-<
Ajouter un commentaire
Réponse
+0
moins plus
Vous avez dit: i fallait juste que je mette enreg en variant parce que ca marche pas en recordset sous access 2000.

qui peut mieux m'expliquer ce détail? parce que j'ai le meme probleme.
Je suis un tout débutant dans ce domaine alors expliquez moi le plus simple possible:-)
un grand merci
Ajouter un commentaire
Réponse
+0
moins plus
En fait, sous VBA, les variables doivent être typées, c'est à dire que l'on doit indiquer ce qu'elle vont contenir : texte, nombre, booléen, recorset (jeu d'enregistrement)

Ex :
Dim toto as string
Dim tata as boolean
Dim tutu as integer

Il est cependant possible de ne pas indiquer cette propriété, c'est le rôle du mot 'variant', mis lors de la déclaration. Dans ce cas, VBA ne contrôle pas ce qui va être dedans, et on peut tout mettre pêle-mêle...

C'est la solution utilisée pour régler le problème du type 'recordset' non trouvé sous 2000...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
blux- 5 août 2008 à 12:39
As-tu mis tes variables en VARIANT ?
flor de nopal - 5 août 2008 à 15:39
désolée Blux je suis novice en access : c'est quoi les variables???
je dois faire koi concrètement ..... ??

(oui je sais je suis pas une flèche... mais t'as bien dit que...les cons ça ose tout ..??? lol)

Merci d'avance pour le sauvetage :)
blux- 5 août 2008 à 15:42
T'arrives sur une discussion, tu dis : "j'ai le même message", alors je te propose la même solution...

Sinon, explique quel est ton souci...
Ajouter un commentaire
Réponse
+0
moins plus
Tu dis: Dans ce cas, VBA ne contrôle pas ce qui va être dedans, et on peut tout mettre pêle-mêle...

mais justement je veux qu'il controle..
je t'explique: je fais une base de donnees de naissance alors quand j'insere (dans ce cas ci) le numero d'admission (clé primaire indexée sans doublons) au moment d'enregistrer il vérifie si le numéro d'admission existe dejà..

J'ai mis un controle d'onglet avec deux pages, j'insere les donnees dans la premiere page, puis la meme chose dams la deuxieme page si l premiere correspond à la seconde alors il enregistre les donnees.
voila la programation pour controler le numero d'admission:
--Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT tblFimena.NADM FROM tblFimena WHERE tblFimena.NADM = " & NADM.Value & ";", dbOpenDynaset)
rs.FindFirst "[NADM] = " & NADM.Value

If rs.NoMatch Then
rs.Close
Else
test1 = 2
MsgBox "Mo d'admission existe déjà"
rs.Close
NADM.BackColor = 255
NADM1.BackColor = 255

End If

j'apprecie vraiment votre aide
UN GRAND MERCI
Ajouter un commentaire
Réponse
+0
moins plus
ta liste rencoie une valeur texte
pour la comparer a un code numerique tu dois la transformer avec cv(zone de texte)
Ajouter un commentaire
Réponse
+0
moins plus
Encore un grand merci pour la peine que vous vous donnez à me répondre.

Une question :-) encore,
tu pourrai me dire comment le faire, l transformation ave cv?
et que veut dire cv?

Un grand merci
random- 14 déc. 2004 à 17:34
regarde dans l'aide à fonctions de conversion
Ajouter un commentaire
Réponse
+0
moins plus
Je tenais encore une fois a vous remercier pour l'aide précieuse qui vous m'avez donné.
Ajouter un commentaire
Réponse
+0
moins plus
Je fais encore appel à votre aide :-(

voilà, avant dans ma base j'avais:
If (frmFiche1 = 1) Then
MsgBox "Valeurs divergentes marquées en ROUGE"
End If

If (test1 = 0) Then
DoCmd.GoToRecord , , acNewRec
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into tblFimena select * from tbcontrole;"
DoCmd.RunSQL "delete * from tbcontrole;"
DoCmd.SetWarnings True

Mat1.Value = ""
ind1.Value = ""
NADM1.Value = ""
...
...
MAT.SetFocus

End If
End Sub

mais maintenant je veux avoir de cette manière:

f (frmFimena1 = 1) Then
intReponse = MsgBox("Valeurs divergentes marquées en ROUGE. Voulez-vous quand même enregistrer? si vous choisissez oui, seule la deuxième saisie sera prise en compte!", vbYesNo, "Confirmation")
Select Case intReponse
Case vbYes
'oui est choisit, la deuxième saisie devra être enregistrée
Case vbNo
'non est choisi, donc annule la manipulation
No = True
End Select
End If

If (frmFimena1 = 0) Then
DoCmd.GoToRecord , , acNewRec
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into tblFimena select * from tbcontrole;"
DoCmd.RunSQL "delete * from tbcontrole;"
DoCmd.SetWarnings True

MAT1.Value = ""
IND1.Value = ""
...
...
MAT.SetFocus

End If
End Sub

mais ça ne marce pas, si vous arrivez à comprendre ma demande, est-ce qu'il vous est possible de corriger ou de faire une petite ligne de commande?
C'est important pour moi je fais donc appel à votre grande aide.
de tout coeur je vous remercie mil fois

G.Ed.
Ajouter un commentaire
Réponse
+0
moins plus
Ecoutes, moi j'ai pas lu la discussion en entière, mais je fais en ce moment à peu près la même chose :

Dim db As Database
Dim rs As Recordset
Dim svg As String

Set db = CurrentDb

'On créé une requête
svg = "SELECT ...;"
Set rs = db.OpenRecordset(svg)

'On affecte ensuite les résultat du recordset aux zones de textes du formulaire
Me.marque_poste.Value = rs!marque_poste
...

En fait, c'est que enreg tu dois le déclarer en recordset.

Sur la partie vba, vérifie dans outils, référence, que celles ci sont bien cochés:
Microsoft Visual Basic For Applications Extensibility 5.3
OLE Automation
Visual Basic For Applications
Microsoft Access 9.0 Object Library
Microsoft DAO 3.6 Object Library
Microsoft Activex DataObjects 2.7 Library
Microsoft Activex DataObjects Recordset 2.7 Library

Normalement, après ça devrait fonctionner.
Ajouter un commentaire
Réponse
+0
moins plus
slt
j'ai un pb dans le recordset que j'ai crée il me donne le message suivat:
"type de données incopatible dans l'expression du critére "
voila mon script

Option Explicit
Dim RecMod As New Recordset
Dim BndMod As New BindingCollection

Private Sub Form_Load()
MsgBox "" & Module1.Id1 & ""
' *** Connexion avec la base de données
Connex.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & App.Path & "\bourse.mdb;"

RqSql = "SELECT * FROM AGENTT WHERE MATRICULE = " & Module1.Id1 & " "
'On Error Resume Next
RecMod.CursorLocation = adUseClient
'On Error Resume Next
RecMod.Open RqSql, Connex, adOpenStatic, adLockOptimistic, adCmdText

Set BndMod.DataSource = RecMod

With BndMod
.Add Text1, "Text", "MATRICULE", , "matricule"
.Add Text2, "Text", "NOM_A", , "nom"
.Add Text3, "Text", "PRENOM_A", , "prenom"
.Add Text4, "Text", "SALAIRE_A", , "salaire"
.Add Text5, "Text", "DATE_RECRUTEMENT", , "date de recrutement"
.Add Text6, "Text", "REFERENCE", , "reference"
.Add Text7, "Text", "echelle", , "echelle"
.Add Text8, "Text", "echelon", , "echelon"
.Add Text9, "Text", "NB_ENFANT", , "nombre d'enfant"
End With
End Sub

aider moi svp ,merci !
Ajouter un commentaire
Réponse
+0
moins plus
Ok alors voilà :
j'ai importé un fichier XL vers une table ACCESS existante - que j'ai écrasée
à partir de là j'ai réalisé plusieurs requêtes (en mode création simple) utilisant cette table.
1 mois après je réimporte un nouveau fichier XL (mis à jour) vers ma base access et écrase ma table existante...
lorsque je veux ouvrir les requêtes , j'obtiens le message d'erreur
"type de données incompatible avec l'expression du critère" - que faire ??

merci
Ajouter un commentaire
Réponse
-1
moins plus
bonjour,
j'espère que ce n'est pas hosé ce que je vais vous demander, mais si je vous passe mon travail (en rar il fait 800kb) vous pourriez me faire les lignes de programation?
c'est que je ne connais pas bien la programation, il le travail doit avancer:-(

merci de votre réponse, si jamais vous m'accordiez cette faveur, puis-je avoir votre adresse email?

Merci encore, meme si la reponse est négative:-)
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour, je cherche une aide et un avis.
Je vous explique.

J'ai une fiche dont-il faut faire la saisie, dans le formulaire il y adeux cases dans l'une on insere le code alpha numerique ex:0188 et dans la case à coté il serà affcihé A88 et ce qui sera enregistré cest le A88, je fais ça pourque la personne n'ai qu'à faire au clavier numérique.

De quel manière dois-je construire la table et puis je peux faire la liaison?
Un grand merci pour votre aide
Cordialement
G.Ed,
Ajouter un commentaire
Ce document intitulé « access: erreur sur requete » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?