code à verifier

code à verifier - Programmation

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

Reply

Marsh Posté le 05-04-2001 à 18:55:09   

Reply

Marsh Posté le 05-04-2001 à 20:14:21    

s'il vous plait, de l'aide

Reply

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  
count(1) nb  
from  
ENDT  
where  
reference = :ref and  
date_entree >= datedebut and  
date_entree <= datefin  
end;  


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  
 :hello:


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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é.

Reply

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 ????

Reply

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...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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]

Reply

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...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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

Reply

Marsh Posté le 05-04-2001 à 21:13:27   

Reply

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.

Reply

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; ????

Reply

Marsh Posté le 05-04-2001 à 21:31:16    

oh puree... :ouch:  
 
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 !!!


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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

Reply

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]

Reply

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]

Reply

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...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 05-04-2001 à 21:44:34    

mais c'est sur que dans un TDBGrid ca sera plus beau ;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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 ???

Reply

Marsh Posté le 05-04-2001 à 21:54:57    

Citation :


je ne peux pas l'afficher avec un showmessage ???  


 
NON! :D
 

Citation :


Plus d'erruers à la compil,merci, mais en cliquant sur le bouton il ne me lance pas la procédure  
pourquoi ???


 
Regarde mon code plus haut, tu comprendras!!

 

[edit]--Message édité par AlphaT--[/edit]

Reply

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:

  • sReference:= InputBox('Saisie', 'Référence ?', '' );


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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

Reply

Marsh Posté le 05-04-2001 à 22:19:04    

il te dit quoi comme erreur ?


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 05-04-2001 à 22:21:39    

erreur sql generale
 
ereur de sy,ntaxe dans l'expression count(Quantité_entree) nb

Reply

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 :


select count(*) nb    
from ENDT    
where reference = :ref  
and date_entree >= datedebut  
and date_entree <= datefin      


 
ps: tu as bien une table ENDT avec des colonnes REFERENCE et  DATE_ENTREE ???

 

[edit]--Message édité par JWhy--[/edit]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 05-04-2001 à 22:30:58    

erreur
 
message qrynbarticle: parametre DateDebut non trouvée

Reply

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 ??

Reply

Marsh Posté le 05-04-2001 à 22:49:34    

dans la propriete SQL de ta Query, rajoute : devant datedebut  
et datefin


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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.

Reply

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

Reply

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

Reply

Marsh Posté le 06-04-2001 à 09:41:35    

allez please, un dernier effort ???

Reply

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]

Reply

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...


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

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.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed