|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Simple filtrage: "Têtutesse oblige!" [ Base de données / Autre ] (leader2000)
Informations & options pour cette discussion
jeudi 15 mai 2008 à 16:16:38 |
Simple filtrage: "Têtutesse oblige!"

leader2000
|
Salut! Je me demande si c'est un oubli ou c'est juste une question d'ignorance. J'ai une table contenant deux champs: CodeBar et Prix. Et sur mon Tform j'ai les composants suivants: Tedit1 et Tedit2. Dans le OnChange de mon Tedit1, j'ai les codes suivants pour permettre le filtrage:
Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text); Adotable1.filtered:= True; Edit2.Text:= Adotable1.FieldValues['prix']; // bloquage ICI
Ben, quand j'écris par exemple le nom d'un code bar dans mon Tedit1. Il fait parfaitement du filtrage en affichant dans le Tedit2, le prix juste à l'aide de la ligne de code colorée en rouge.
Mais quand j'utilise mon le lecteur Code bar... il tente de bien faire la lecture... soudainement le programme se bloque au niveau de la ligne colorée de rouge.
Tandis que lorsque je saisi manuellement au truchement du clavier le code bar dans le Tedit1, la donnée du prix s'affiche normalement dans le Tedit2. Mais alors, la même operation faite avec le dit lecteur. Il y a bloquage sur la dite ligne en rouge. Que faire?
Merci d'avance, Developper est une dimension pour moi. Leader2000
|
|
|
vendredi 16 mai 2008 à 08:21:27 |
Re : Simple filtrage: "Têtutesse oblige!"

cantador
|
bonjour leader2000,
avec le lecteur, quelle est la valeur dans :
quotedstr(edit1.Text);
?
ajouter ceci en attendant :
Adotable1.filtered:= false;
Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text);
Adotable1.filtered:= True;
Edit2.Text:= Adotable1.FieldValues['prix']; // bloquage ICI
|
|
|
vendredi 16 mai 2008 à 12:46:51 |
Re : Simple filtrage: "Têtutesse oblige!"

leader2000
|
Salut! J'ai essayé les codes donnés. Ça n'a malheuresement pas marché! Ça affiche le prix dans Edit2. Au fait, je ne devais pas mettre du "next" sinon il passerait chaque fois à la deuxième ligne. Le code en rouge m'a permis d'actualiser toujours ma table. Ma préoccupation est de faire juste une boucle qui me permettra l'affichage du prix d'un produit à un autre, chaque fois qu'il sera scanner. Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text); Adotable1.filtered:= True; Adotable1.filtered:= False; Adotable1.Next; Edit2.Text:= Adotable1.FieldValues['prix']; Adotable1.Refresh; Developper est une dimension pour moi. Leader2000
|
|
|
vendredi 16 mai 2008 à 20:53:40 |
Re : Simple filtrage: "Têtutesse oblige!"

cantador
|
je ne pige pas grand chose à tes explications car Au fait, je ne devais pas mettre du "next"dans le code fourni il n'y avait pas de next et par ailleurs tu ne réponds pas la question posée.. valeur dans : quotedstr(edit1.Text); et je ne vois vraiment pas ce que next vient faire ici..(car cette instruction sert à se déplacer sur l'enregistrement suivant..) et enfin un filtre ne déplace pas le pointeur.. il faut faire un locate si tu tiens à te positionner sur l'enregistrement précis sinon tu peux faire un lookup à condition de récupérer la clé du prix avec le lecteur. cantador 
|
|
|
samedi 17 mai 2008 à 15:25:36 |
Re : Simple filtrage: "Têtutesse oblige!"

leader2000
|
Ok. J'ai été trop brut dans mon expression. Je crois que je veux resumer tout ça pour être plus explicite. Pour repondre à ta question du Edit1, il reçoit la valeur du code Bar. C'est dire que, les codes lus par le lecteur seront affichés dans l'Edit1. Au fait, j'ai compris qu'il s'agit d'une sorte de refus d'écrire manuellement le code. Je prends un exemple très concret: ma Table contient deux champs: "CodeBar" et "Prix". C'est dire que Edit1 pour affichage "Code Bar" et edit2 pour affichage "Prix". En runtime; si je vais dans mon Dbgrid pour copier un code à partir du champ "codeBar" et le coller dans l'Edit1. L'affiche dudit produit apparaît sans problème dans l'Edit2. Mais alors, si j'écris manuellement le même code à partir de l'edit1. Oh lala lala, c'est là où s'pose le problème. Le programme s'plante TOTALEMENT et s'arrête sur la ligne que j'ai colorée en rouge. Pour finir, je suis convaincu que c'est ce que le lecteur fait. Faisant la lecture du code bar avec le lecteur...le programme s'plante avant même d'entamer le deuxième chiffre du code bar. Voilá tout! Comment pourrai-je resoudre ce problème.
Merci,
...OnChange...
Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text); Adotable1.filtered:= True; Edit2.Text:= Adotable1.FieldValues['prix']; // bloquage ICI
Developper est une dimension pour moi. Leader2000
|
|
|
samedi 17 mai 2008 à 18:05:05 |
Re : Simple filtrage: "Têtutesse oblige!"

cantador
|
Réponse acceptée !
Mais alors, si j'écris manuellement le même code à partir de l'edit1. Oh lala lala, c'est là où s'pose le problème. Le programme s'plante TOTALEMENT
C'est normal leader2000 puisque ton évènement OnChange est actif et donc dès que tu tapes le premier caractère paf ton OnChange se déclenche et crée un filtre avec ce premier caractère.. on imagine le résultat.. Si tu veux pouvoir taper ton code manuellement, il faut nécessairement déclencher quelque chose lorsque ta saisie est terminée.. Mais qui peut le savoir quand c'est fini ? sauf bien sûr si tous tes codes ont la même longueur
auquel cas il suffit de tester la longueur de ta chaîne sur le OnKeyPress ou le OnkeyDown et dès qu'elle est atteinte tu exécutes ta procédure de filtre. sinon tu poses un bouton et tu cliques lorsque la saisie est terminée. Dans les deux cas, il faut encapsuler tes écritures par un traitement des erreurs try ... ... except showmessage('code erroné'); exit; end; ce qui évitera les plantages du programme. si ça te convient merci de cliquer sur réponse acceptée cantador 
|
|
|
samedi 17 mai 2008 à 19:48:27 |
Re : Simple filtrage: "Têtutesse oblige!"

leader2000
|
Oui Cantador, les dits codes marchent parfaitement bien que toujours maintenu dans le même évenement (OnChange). Plus de blocage et le filtrage se fait bien! Quand je dis qu'il se fait bien, c'est parce que je le vois à travers mon Dbgrid. Seulement, l'affichage du contenu du champ "prix" ne s'affiche pas dans l'Edit2, après écrit le code dans l'Edit1. Peux-tu jeter un coup d'oeil là où j'ai mis la fameuse ligne de code (colorée en vert). Si tu peux bien apporter ton aide...Cela faciliterai le clique sur "reponse acceptée". Je suis convaincu que cette solution aiderai quelques uns.
...OnChange... try Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text); Adotable1.filtered:= True; except showmessage('code erroné'); Edit2.Text:= Adotable1.FieldValues['prix']; // plus de bloquage, juste une question d'affichage! exit; end;
Merci d'avance,
Developper est une dimension pour moi. Leader2000
|
|
|
samedi 17 mai 2008 à 21:55:12 |
Re : Simple filtrage: "Têtutesse oblige!"

cantador
|
try Adotable1.filtered:= false; Adotable1.filter:='CodeBar=' +quotedstr(edit1.Text); Adotable1.filtered:= True; Edit2.Text:= Adotable1.FieldValues['prix']; except // ici on ne traite que l'erreurshowmessage('code erroné'); exit;end;
nb : il te manque le traitement de la chaîne saisie manuellement.. je ne peux pas faire plus car tu ne réponds aux questions posées..  cantador 
|
|
|
dimanche 18 mai 2008 à 18:31:03 |
Re : Simple filtrage: "Têtutesse oblige!"

leader2000
|
Cantador! Avant toute chose, laisses-moi repondre très rapidement à ta question avant que tu ne te fâches . Le traitement de la dite chaîne est numérique. J'ai omis tout ce temps de t'informer qu'à chaque plantage vient ce message:
Project Project1.exe raixed exeception class EvariantTypeCastError with message'Could not convert variant' of type (Null) into type (String)'. Process stopped. Use Step or Run to continue. Tes codes de traitement d'erreur marchent très bien. Je rappel que le filtrage s'passe bien. Parce que j'arrive d'ailleurs à voir les données filtrées dans mon Dbgrid. C'est juste la donnée "prix" qui ne s'affichage pas dans le fameux Edit2.
Cool, Developper est une dimension pour moi. Leader2000
|
|
|
lundi 19 mai 2008 à 10:45:04 |
Re : Simple filtrage: "Têtutesse oblige!"

cantador
|
Je ne me fache presque jamais ! (mdr) C'est un plaisir de répondre aux questions.. J'aime bien aussi appeler un chat un chat.
'Could not convert variant' of type (Null) into type (String)' Ce message est la traduction en anglais de mes explications fournies.. Il apparaît dans l'EDI mais en lançant l'exécutable c'est l'autre('code erroné') qui doit sortir. une solution consiste à supprimer le OnChange et mettre : Ex:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var LongeurDeMaChaine : integer; begin if Key < ' ' then exit; if Length(Edit1.Text) = LongueurDeMaChaine then MaProcedureDeFiltre; end;
Ainsi la procédure MaProcedureDeFiltre ne se déclenchera que lorsque la chaîne sera complète et le cas Null ne se produira pas, ne restera que les codes erronés..
Mais il y a encore beaucoup d'autres possiblités.
Mais chaque jour suffit à sa peine !
cantador
|
|
|
Cette discussion est classé dans : code, prix, filtrage, tedit1, tedit2
Répondre à ce message
Sujets en rapport avec ce message
Comment faire repeter des données Tedit1 vers Tedit2 [ par leader2000 ]
Salut! J'aimerai bien vous posez une simple question pratique que je n'arrive pas à resoudre. J'ai deux Tedits (Tedit1 et Tedit2). J'aimerai faire r
filtrage BD Access avec Delphi [ par nassim25 ]
procedure TfrmFamille.codeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);Var Erreur : Integer;beginErreur:=0;TableFamille.Filtered:=Fals
envoyé des code ESCAPE à une imprimante sur port série ? [ par rebelor91 ]
Bonjour à tousje suis en D5, j'aimerais faire un tout petit programme exe contenant une sequence de code Escape à envoyer à une imprimante brancher su
syntaxe d'une requete sql [ par kam81 ]
bonsoir,j'ai une requête sql qui renvoie un nom suivant le code correspondant, le code est structuré sous la forme : dzxyabc où z,x,y,a,b,c sont des c
Creation d'une base de données par code [ par richarddum ]
Bonjour, Je cherche la solution pour créer une base de données Firebird directement par mon application Delphi, qui utilise les composant DBEXPRESS.
Quel prix demander pour un logiciel qu'on me demande? [ par ericdivx ]
Bonjour, je suis étudiant, et l'on me demande un logiciel pour une équipe de foot.Je ne sais pas encore exactement de quoi il s'agit, mais je pense qu
[Composant] créé dans le code [ par ffomnislash ]
Bonjour , Je me heurte à un petit probleme en Delphi et mes recherches ne donne rien de bien concluant. J'ai besoin d'avoir un nombre variable de T
Racisme en l'air [ par hurrycane ]
salam pourquoi ce code a été désactivé : http://www.delphifr.com/code.aspx?ID=34863 par les admins est ce juste parceque c'est un musulman qui la fait
Parametres bdp [ par kapoue2000 ]
Bonjour, Lorsque j utilise le génrérateur de code pour ajouter un paramètre à la SelectCommand de mon bdpDataAdapter tout fonctionne correctement mais
demande un code source delphi [ par inll077 ]
salut, je demmandes des codes sources delphi sur l'identification des personnes par la rétine (la biométrie rétinniène)par la methode des k plus proch
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|