|
probleme de saisie dans table |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
J'ai une Table memoire Ma table contient 3 colonne soit NoTag ,Nom et Description NoTag est en saisie et les autre en affichage
Ce que je veux obtenir Lors de l' ouverture de ma fenetre,je veux avoir acces directement en saisie sur mon champs MonTag de ma table.Que mon curseur soit sur le champs NoTag pres a receuillir l'information.
Cela est il possible et comment et ou intervenir Merci beaucoup.J'esoere avoir uvoir une reponse.
Contribution le : 19/05/2009 17:25
|
|
|
Re: probleme de saisie dans table |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
j'ai resolu le premier element de mon probleme par un
DonneFocus()
Voila mon probleme en entier
Ce que je veux obtenir 1 - ouverture de ma fenetre directement en saisie sur le champs NoTag (Resolu)
2 - via la lecture du port renseigne NoTag qui via une requette alimente Nom et description
3 - une fois informer Nom et descrition NoTag reprend la saisie et ainsi de suite,sans aucune manipulation du clavier ni de la souris
La seule manipulation de la souris sera sur le bouton de fermeture
Je veux que l'usager presente aux lecteur serial son code barre et qui se lit ainsi de suite selon la session le lot a lire qui peut etre de 200 a 300 unitees j'ai 3 lecteur qui effectue le travail similiaire relie a un meme serveur',
Mon probleme viens de l'alimentation de ma table
La fenetre est cree vierge La table est memoire en saisie son alimentation est un lecteur serial Je peux la modifie et mettre en acces a un fichier temporaire sui cela peut aider.
Je n'ai pas reussis a mettre en saisi automatique mon premeir champs Notag a l 'ouverture de la fenetre. J 'ai essayer EnvoieTouche .
Presentement il faut que j'aille dans la table et selecttionner le champs Tag
Deuxieme probleme une fois informer le champs Tag,il devrait se positionner sur la deuxieme ligne en attente de la puce de lecture
Voici le code que j'utilise si vous avez un code ,une solution ou un exemple je suis prenneur merci
// Declaration globale de la fenetre
//***début du code serial **** GLOBAL Port est un entier buffer est une chaîne
LOCAL Taux est un entier Parite est un entier BitDonnee est un entier BitStop est un entier Port=1 Taux=9600 Parite=0 BitDonnee=8 BitStop=1
SI sOuvre(Port,5000,5000)=Faux ALORS Erreur("Erreur lors de l'ouverture du port "+Port) Ferme() FIN sFixeParamètre(Port,Taux,Parite,BitDonnee,BitStop) Timer("sReception",50,1) //*** Fin du code serial ****
TableSupprimeTout(TABLE)// met la table a zero
// fin Declaration globale de la fenetre
//initialise la table
SI TABLE..Vide ALORS TableAjoute(TABLE) DonneFocus(TABLE.NoTag) // il me donne bien le focus mais ne prend pas ma lecture // il faut qiue je fasse enter pour faire apparaitre ma lecture // voir note sur EnvoieTouche
// Entre de NoTag
SRECEPTION()
// Sortie de NoTag
TableAffiche(TABLE) // entre dans NoTag NoTag = gauche(buffer,12)
SI SansEspace(NoTag)="" ALORS Erreur("La colonne NoTag doit être saisie en premier") RepriseSaisie(NoTag) FIN // Initialise la requête SI PAS HExécuteRequête(REQ_VetementTag,hRequêteDéfaut,NoTag) ALORS Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()) RETOUR FIN
//// lecture du premier enregistrement de la requête HLitPremier(REQ_VetementTag,NoTag) NoTag = REQ_VetementTag.NoTag Nom = REQ_VetementTag.NomEmployer Description = REQ_VetementTag.DescService
HAnnuleDéclaration(REQ_VetementTag)
EnvoieTouche("{ENTREE}",TABLE.NoTag) //il ne me redonne pas la saisie c.a.d ne simule pas un entre clavier // pour redonner le focus a la lecture
// ************************************ FONCTION SRECEPTION()
wtaille est un entier //buffer est une chaine FlagOK est un booléen nbcaralire est un entier nbcaralire=14 FinTimer(1) wtaille=sDansFileEntrée(Port) FlagOK=Faux
// Lecture des informations sur le port série SI wtaille>nbcaralire ALORS buffer=sLit(Port,nbcaralire) FlagOK=Vrai FIN
// Traitement des informations lues sur le port série SI FlagOK // Info(buffer) FIN
Timer("sReception",50,1) RENVOYER (buffer)
// ***************************************************
Contribution le : 19/05/2009 18:59
|
|
|
Re: probleme de saisie dans table avec port serie |
|
Utilisateur WDF
Inscrit: 19/04/2006 18:20
Post(s): 63
|
Correction a jours
Je galere depuis quelque jours sur ce probleme
Ce que je veux obtenir 1 - ouverture de ma fenetre directement en saisie sur le champs NoTag (Resolu) Resolu avec la fonction DonneFocus(NoTag) 2 - via la lecture du port renseigne NoTag qui via une requette alimente Nom et description Non resolu il faut que lise 2 fois pour que NoTag renseigne bien NoTag Je peux comprendre pour la premiere fois Car le buffer est vide de plus il faut que je tappe un ENTER manuel pour alimenter le reste de la ligne
3 - une fois informer Nom et descrition NoTag Change de ligne et reprend la saisie et ainsi de suite,sans aucune manipulation du clavier ni de la souris. Non resolu le changementde ligne s'effectue grace a EnvoieTouche ("{TAB 4}",Table.NoTag) Mais il faut faire un retour ENTRE manuel pour continuer
Lors de l'ouverture de la fenetre ,Je veux que l'usager presente son code barre et qui se lit ainsi de suite sans toucher au clavier ni souris
les lots a lire qui peut etre de 200 a 300 unites j'ai 3 lecteur qui effectue le travail similiaire relie a un meme serveur
Donc une table avec saisie sur NoTag ,l'usager presente le code barre identification et validation avec la requete et un autre code barre ainsi de suit sans manipulation de la souris ou du clavier
La seule manipulation de la souris sera sur le bouton de fermeture
J'ai une Table memoire alimenter par le port serie Ma table contient 3 colonne soit NoTag ,Nom et Description NoTag est en saisie et les autre en affichage alimente par une requete
Pour assigner à la touche ENTREE l'action de générer une nouvelle ligne dans la colonne, - dans le détail de la table, cocher "Retour à la ligne par ENTREE" - dans le détail de la colonne NoTag,Defilement Retour a la ligne automatique
//******************** Probleme a regler ************* Double lecture pour saisir la bonne information Comment faire un ENTER software (dans le buffer il y a un cr et lf) Je lit 14 caractere et 12 sont bons 12+cr+lf J'ai essayer EnvoieTouche("{ENTREE 2 }",Table.NoTag) Caract(13) + caract(10) Peut etait-il mal placer Je suis pas certain de l'emploie du timer et sEvenemt Faut-il implanter un thread ,multitache ? si oui comment Faut-il vider le buffer Tous vos commentaire sont bons s'il vous plait commenter avec du code // ******************* voila le code *************
//******************** Declaration global fenetre7 GLOBAL Port est un entier gsGuyBuffer est une chaîne LOCAL Taux est un entier Parite est un entier BitDonnee est un entier BitStop est un entier Port=1 Taux=9600 Parite= 0 BitDonnee=8 BitStop=1 //SI sOuvre(Port,5000,5000)=FAUX ALORS SI sOuvre(Port,5000,5000,sTimeoutDéfaut,Vrai)= Faux ALORS Erreur("Erreur lors de l'ouverture du port "+Port) Ferme() FIN sFixeParamètre(Port,Taux,Parite,BitDonnee,BitStop) Timer("sReception",50,1) //-- Fin du code généré par l'assistant
sEvénement(1,sEveCaractèreReçu,SRECEPTION)
//**************** fermeture fenetre7***************** // Fermeture du port sFerme(Port) sFinEvénement(1)
// ************** Initalisation de Table ****************
DonneFocus(Table.NoTag)
// ***************** initialisation de NoTag *************
// ***************** entree de NoTag **************
SRECEPTION()
// **************** sortie de NoTag ***************
// Initialise la requête SI PAS HExécuteRequête(REQ_VetementTag,hRequêteDéfaut,NoTag) ALORS Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()) RETOUR FIN
// lecture du premier enregistrement de la requête HLitPremier(REQ_VetementTag,NoTag)
NoTag = REQ_VetementTag.NoTag Prenom = REQ_VetementTag.Prenom Nom = REQ_VetementTag.NomEmployer Description = REQ_VetementTag.DescService
HAnnuleDéclaration(REQ_VetementTag)
// permet de d'aller sur la prochaine ligne EnvoieTouche("{TAB 4 }",Table.NoTag)
//EnvoieTouche("{ENTREE 2 }",Table.NoTag) // non operationnel test
// reprend la possession de la ligne RepriseSaisie(NoTag)
// **************** Procedure Locale **********************
FONCTION SRECEPTION() //Info ("guy1renvoueyer",NoTag) wtaille est un entier wtaille2 est un entier sBuffer est une chaîne FlagOK est un booléen nbcaralire est un entier nbcaralire=14 FinTimer(1) wtaille=sDansFileEntrée(Port)
FlagOK=Faux
// Lecture des informations sur le port série en fonction de la condition d'arrêt SI wtaille>nbcaralire ALORS sBuffer=sLit(Port,nbcaralire) FlagOK=Vrai Trace(Port,sBuffer,wtaille) NoTag = Gauche(sBuffer,12) FIN
// Traitement des informations lues sur le port série SI FlagOK // Info(buffer) FIN
Timer("sReception",50,1)
RENVOYER(NoTag)
Contribution le : 20/05/2009 04:27
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|