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
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer


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
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


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.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2