code à verifier - Programmation
Marsh Posté le 05-04-2001 à 20:25:02
[Erreur] Unit8.pas(92): Identificateur non déclaré : 'qryNbArticle'
il ne trouve pas ton object Query, pose z'en un sur ta form ou sur ton datamodule
juste une question
Citation : select |
CE KOI CA ????
tu mets ta requete directos a plat dans le code ???? t'as de l'espoir !
serieux, regarde l'aide de delphi sur les access aux bases de donnees ...
bonne chance
Marsh Posté le 05-04-2001 à 20:46:21
La requête SQL doit être tapée dans l'inspecteur d'objet, plus précisément la propriété SQL du composant TQuery. On peut aussi initialiser cette propriété en éxécution (dans son code) mais c'est plus compliqué.
Marsh Posté le 05-04-2001 à 20:49:33
Moi c'est en cliquant sur le bouton qu'il doit me poser 3 questions et en fonction des reponses il effectue la requete.
Donc pour vous le code est faut ????
Marsh Posté le 05-04-2001 à 20:54:24
carrement... on a l'impression que t'as recupere les bouts de codes des reponses du topic precedent et que tu les as colles a la barbare dans l'editeur delphi !
donc deja faut que tu poses un TQuery dans ta form/datamodule et apres tu mets le code SQL dans la propriete SQL du TQuery (cf post de AlphaT) et apres tu devrais etre bon...
Marsh Posté le 05-04-2001 à 20:56:04
et au fait la requete exacte c'est:
select
count(1) nb
from
ENDT
where
reference = :ref and
date_entree >= : datedebut and
date_entree <= : datefin
end;
il manquait les : devant datedebut et datefin (et enleve l'espace que j'ai du ajoute entre le : et d
[edit]--Message édité par JWhy--[/edit]
Marsh Posté le 05-04-2001 à 20:59:10
D'après moi, le end; à la fin de la commande sql est inutile.
De plus les paramètres datedebut et datefin on doit leur indiquer qu'ils sont de type TDatetime sinon Delphi n'aimera pas. Pour ça, c'est la propriété Params.
[edit]--Message édité par AlphaT--[/edit]
Marsh Posté le 05-04-2001 à 21:06:33
toutafait...
tu peux faire ca pour les date/time:
qryNbArticle.ParamByName('Ref' ).AsString := sReference;
qryNbArticle.ParamByName('DateDebut' ).AsDateTime:= StrToDateTime(sDateDebut);
qryNbArticle.ParamByName('DateFin' ).AsDateTime := StrToDateTime(sDateFin);
devrait etre mieux...
Marsh Posté le 05-04-2001 à 21:13:27
Bon voila le prob, pour l'instant je n'ai pas mis de query sur la form
J'ai un bouton3 qui doit lancer les 3 inputBox
Avec les 3 réponses le prog doit calculer le nombre d'entrées pendant cette période.
Ok ?
qryNbArticle n'est pas déclaré, où dois je le déclarer ??
Le morceau en SQL, je le met où ???
Apparamment pas de le script de la form, mais plutot dans un query ???
Merci pour votre aide
Marsh Posté le 05-04-2001 à 21:17:28
oui dans un TQuery sinon tu seras obligé d'ajouter du code supplémentaire pour l'ajouter manuellement.
Marsh Posté le 05-04-2001 à 21:28:21
qryNbArticle
cela pose des prob, est ce bon ??
ce n'est pas plutot un truc du genre
Query1NbarticleParamByName(('Ref'.AsString) := sReference; ????
Marsh Posté le 05-04-2001 à 21:31:16
oh puree...
par defaut... quand tu poses un TComposant, delphi te le renomme Composant1... donc par exemple tu poses une TQuery ==> ca va donner Query1... a toi de le renommer (propriete Name du composant) en qqchose de plus parlant... par exemple qryNbArticle...
ps: depeche toi de trouver un bouquin/cours sur Delphi !!!
Marsh Posté le 05-04-2001 à 21:38:25
Merci c'est mieux,
Il reste 1 erreur sur cette ligne
ShowMessage(qryNbArticle.FieldByName('Nb'.AsString));
Il me dit que type record, object ou class requis
Marsh Posté le 05-04-2001 à 21:40:58
> Jwhy
Voici un code fait pour un composant Tquery (N.B ton code peut ressembler un peu à ça, il s'agit d'un exemple!)
Procedure TForm1.button1Click(Sender: TObject);
var
sReference, sDateDebut, sDateFin : string;
begin
/* Saisie des dates */
sDateDebut:= InputBox('Saisie', 'Date Début ?', '';
sDateFin:= InputBox('Saisie', 'Date Fin ?', '';
if qNbArticle.State <> dsInactive //vérification si ouvert
then qNbArticle.Close; //fermeture
else begin
qNbArticle.ParamByName('Ref' ).AsString := sReference;
qNbArticle.ParambyName('DateDebut' ) := strToDate(sDatedebut)
qNbArticle.ParambyName('Datefin' ) := strToDate(sDateFin)
end;
qNbArticle.Open; //ouverture
end;
[edit]--Message édité par AlphaT--[/edit]
Marsh Posté le 05-04-2001 à 21:42:09
bono a écrit a écrit : Merci c'est mieux, Il reste 1 erreur sur cette ligne ShowMessage(qryNbArticle.FieldByName('Nb'.AsString)); Il me dit que type record, object ou class requis |
Le résultat de la réquête, tu ne l'affiche pas comme ça mais dans un composant TDBGrid que tu place également sur ta fiche. Sa propriété DataSource doit être le nom du composant TDatasource relié au composant TQuery.
[edit]--Message édité par AlphaT--[/edit]
Marsh Posté le 05-04-2001 à 21:44:11
bono a écrit a écrit : Merci c'est mieux, Il reste 1 erreur sur cette ligne ShowMessage(qryNbArticle.FieldByName('Nb'.AsString)); Il me dit que type record, object ou class requis |
ShowMessage(qryNbArticle.FieldByName('Nb' ).AsString);
pb de placement de la parenthese fermante...
Marsh Posté le 05-04-2001 à 21:44:34
mais c'est sur que dans un TDBGrid ca sera plus beau
Marsh Posté le 05-04-2001 à 21:52:46
je ne peux pas l'afficher avec un showmessage ???
procedure TForm8.Button3Click(Sender: TObject);
var
sReference, sDateDebut, sDateFin : string;
begin
sReference:= InputBox('Saisie', 'Référence ?', '');
sDateDebut:= InputBox('Saisie', 'Date Début ?', '');
sDateFin:= InputBox('Saisie', 'Date Fin ?', '');
qryNbArticle.ParamByName('Ref' ).AsString := sReference;
qryNbArticle.ParamByName('DateDebut' ).AsDateTime:= StrToDateTime(sDateDebut);
qryNbArticle.ParamByName('DateFin' ).AsDateTime := StrToDateTime(sDateFin);
qryNbArticle.Open;
if qryNbArticle.FindFirst then
ShowMessage(qryNbArticle.FieldByName('Nb').AsString);
Plus d'erruers à la compil,merci, mais en cliquant sur le bouton il ne me lance pas la procédure
pourquoi ???
Marsh Posté le 05-04-2001 à 21:54:57
Citation : |
NON!
Citation : |
Regarde mon code plus haut, tu comprendras!!
[edit]--Message édité par AlphaT--[/edit]
Marsh Posté le 05-04-2001 à 21:55:38
verifie que l'evenement est bien associe a la procedure (selectionne ton composant, touche f11, onglet events, evenement onClick... )
et mets un point d'arret sur la premiere ligne de ton code:
Marsh Posté le 05-04-2001 à 22:06:34
Il me pose bien les 3 questions
L'evenement onclick n'etait pas activé,
Mais (eh oui)
Il plante pour la reponse
Marsh Posté le 05-04-2001 à 22:19:04
il te dit quoi comme erreur ?
Marsh Posté le 05-04-2001 à 22:21:39
erreur sql generale
ereur de sy,ntaxe dans l'expression count(Quantité_entree) nb
Marsh Posté le 05-04-2001 à 22:25:00
je connais pas ta table mais verifie si ta requete est bonne
dans un premier temps, essaye d'utiliser ca pour voir si ca marche:
Citation : |
ps: tu as bien une table ENDT avec des colonnes REFERENCE et DATE_ENTREE ???
[edit]--Message édité par JWhy--[/edit]
Marsh Posté le 05-04-2001 à 22:30:58
erreur
message qrynbarticle: parametre DateDebut non trouvée
Marsh Posté le 05-04-2001 à 22:32:55
sReference:= InputBox('Saisie', 'Référence ?', '');
sDateDebut:= InputBox('Saisie', 'Date Début ?', '');
sDateFin:= InputBox('Saisie', 'Date Fin ?', '');
qryNbArticle.ParamByName('Ref' ).AsString := sReference;
qryNbArticle.ParamByName('DateDebut' ).AsDateTime:= StrToDateTime(sDateDebut);
qryNbArticle.ParamByName('DateFin' ).AsDateTime := StrToDateTime(sDateFin);
Est ce que référence dans la partie du haut= ref dans la partie dud bas ??
Marsh Posté le 05-04-2001 à 22:49:34
dans la propriete SQL de ta Query, rajoute : devant datedebut
et datefin
Marsh Posté le 05-04-2001 à 23:00:09
Maintenant, c'est erreur de syntaxe dans count(*) nb
Je n'y arriverais donc jamais, enfin je vous remercie pour votre aide.
Marsh Posté le 05-04-2001 à 23:32:33
j'ai mis la ligne
sum(quantité_Entree)Nb
Et maintenant j'ai l'erruer
erreur de syntaxe (opérateur absent) dans l'expression 'sum(Quantité_Entree) Nb'
Est ce mieux comme erreur
Marsh Posté le 05-04-2001 à 23:43:52
j'ai mis la valeur true à la propriete requestlive du query, maintenant je une erreur comme quoi la table est en lecture seule.
Help
Marsh Posté le 06-04-2001 à 14:35:49
bono a écrit a écrit : j'ai mis la ligne sum(quantité_Entree)Nb Et maintenant j'ai l'erruer erreur de syntaxe (opérateur absent) dans l'expression 'sum(Quantité_Entree) Nb' Est ce mieux comme erreur |
Nb est-il un nom de champ? Si oui, il doit y avoir une virgule après sum (qte_entree) pour les séparer. Si non, tu le barres.
[edit]--Message édité par AlphaT--[/edit]
Marsh Posté le 06-04-2001 à 16:51:26
si j'ai bien compris, "Nb" est un alias pour count(*) ou Sum(), c'est pour y acceder via le ParamByName() dans Delphi...
Marsh Posté le 06-04-2001 à 16:52:39
Bono> le plus simple c'est que tu testes ta requete dans Access ou autres (je ne sais pas quelle BD tu utilises) et une fois que ca marche, tu la copies/colles dans la propriete du TQuery
Marsh Posté le 11-04-2001 à 08:58:59
Encore moi, avec le meme prob, là je suis bloqué,
procedure TForm8.Button3Click(Sender: TObject);
var
sReference, sDateDebut, sDateFin : string;
begin
sReference:= InputBox('Saisie', 'Référence ?', '');
sDateDebut:= InputBox('Saisie', 'Date Début ?', '');
sDateFin:= InputBox('Saisie', 'Date Fin ?', '');
qryNbArticle.ParamByName('Ref' ).AsString := sReference;
qryNbArticle.ParamByName('DateDebut' ).AsDateTime:= StrToDateTime(sDateDebut);
qryNbArticle.ParamByName('DateFin' ).AsDateTime := StrToDateTime(sDateFin);
qryNbArticle.Open;
{if qryNbArticle.FindFirst then
ShowMessage(qryNbArticle.FieldByName('Nb').AsString);}
if not qrynbArticle.isEmpty then
ShowMessage(IntToStr(qryNbArticle.RecordCount));
End;
Voici la requete :
Select Sum(Quantité_Entree) from ENDT
where (reference=:ref)
and(date_entree>=:datedebut)
and(date_entree<=:datefin)
Voici l'erreur :
erreur sql, trop peu de parametre
4 attendu
Merci pour l'aide.
Marsh Posté le 05-04-2001 à 18:55:09
procedure TForm8.Button3Click(Sender: TObject);
var
sReference, sDateDebut, sDateFin : string;
begin
sReference:= InputBox('Saisie', 'Référence ?', '');
sDateDebut:= InputBox('Saisie', 'Date Début ?', '');
sDateFin:= InputBox('Saisie', 'Date Fin ?', '');
qryNbArticle.ParamByName(('Ref').AsString) := sReference;
qryNbArticle.ParamByName(('DateDebut').AsString) := sReference;
qryNbArticle.ParamByName(('DateFin').AsString) := sReference;
qryNbArticle.Open;
if qryNbArticle.FindFirst then
ShowMessage(qryNbArticle.FieldByName('Nb'.AsString));
select
count(1) nb
from
ENDT
where
reference = :ref and
date_entree >= datedebut and
date_entree <= datefin
end;
end.
voici la liste des erreurs
[Erreur] Unit8.pas(92): Identificateur non déclaré : 'qryNbArticle'
[Erreur] Unit8.pas(92): Opérateur ou point-virgule manquant
[Erreur] Unit8.pas(92): Type Record, Object ou Class requis
[Erreur] Unit8.pas(98): ';' attendu(e) mais 'IF' trouvé(e)
[Erreur] Unit8.pas(110): '.' attendu(e) mais ';' trouvé(e)
[Erreur fatale] roca.dpr(13): Ne peut compiler l'unité utilisée 'Unit8.pas'
Comprend pas