PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → RepriseSaisie sur colonne de table
RepriseSaisie sur colonne de table
Débuté par fabrice.bernt, 14 déc. 2004 14:29 - 9 réponses
Posté le 14 décembre 2004 - 14:29
Je désire insérer une ligne dans une table et passer automatiquement en saisie sur la première colonne de la ligne. J'ai écrit le code suivant qui ne fonctionne pas (la ligne qui passe en saisie n'est pas la ligne insérée, c'est la suivante) !

Code 1:

// Insérer un nouveau produit
TableInsèreLigne(TableProduits) (--> OK)

// Passage en saisie
RepriseSaisie(TableProduits.Champs1) (--> PAS OK ????)

--> ne fonctionne pas


Code 2:

// Récupérer la sélection
iNumLigneSelectionnee est entier = TableSelect(TableProduits)
TableSelectMoins(TableProduits)

// Insérer un nouveau produit
TableInsèreLigne(TableProduits, iNumLigneSelectionnee, 0, "*") (--> OK)

// Positionner la sélection sur la ligne insérée
TableSelectPlus(TableProduits, iNumLigneSelectionnee) (--> OK)

// Passage en saisie
RepriseSaisie(TableProduits.Champs1) (--> PAS OK ????)

--> ne fonctionne pas


Si quelqu'un a la solution... merci de me la communiquer.
Posté le 14 décembre 2004 - 14:40
Vue de loin dans le brouillard, je modifierai la dernière ligne:
RepriseSaisie(TableProduits.Champs1[TableProduits])

Une autre piste, reprise de l'aide en ligne de TableInsereLigne:
Si la table est triée avec la fonction TableTrie, la ligne insérée est positionnée dans la table en fonction du tri en cours, et non de l'indice spécifié.

Frédéric.
Posté le 14 décembre 2004 - 14:47
Bonjour,

Essaie avec cette syntaxe :

TableSelectPlus(<nomdelatable>,TableOccurrence(<nomdelatable>)+1)
RepriseSaisie(<nomdelapremièrecolonne>)

Tiens-moi au courant.

Bon Dev,

Ocin.
Posté le 14 décembre 2004 - 15:33
Rien à faire, vos suggestions ne permettent pas résoudre mon problème.

J'ai également essayé de simuler une entrée de champ avec la fonction ExecuteTraitement mais là rien ne se passe ?

Quelqu'un a-t-il déjà exploité ces fonctions ?

(Un peu coincé car je préfère insérer un produit directement à sa place plutôt que de l'ajouter à la fin de la table et de tout trier ensuite).

Merci de votre aide.
Posté le 14 décembre 2004 - 15:51
Utilise la fonction "EcranPremier" à la place de "RepriseSaisie"
Chez moi, ça marche en tout cas...

--
Bon dév'
Hervé


"Fabrice Bernt" <fabrice.bernt@wanadoo.fr> a écrit dans le message de news:
41bed295$1@news.pcsoft.fr...


Je désire insérer une ligne dans une table et passer automatiquement en
saisie sur la première colonne de la ligne. J'ai écrit le code suivant qui
ne fonctionne pas (la ligne qui passe en saisie n'est pas la ligne insérée,
c'est la suivante) !

Code 1:

// Insérer un nouveau produit
TableInsèreLigne(TableProduits)
(--> OK)

// Passage en saisie
RepriseSaisie(TableProduits.Champs1)
(--> PAS OK ????)

--> ne fonctionne pas


Code 2:

// Récupérer la sélection
iNumLigneSelectionnee est entier = TableSelect(TableProduits)
TableSelectMoins(TableProduits)

// Insérer un nouveau produit
TableInsèreLigne(TableProduits, iNumLigneSelectionnee, 0, "*")
(--> OK)

// Positionner la sélection sur la ligne insérée
TableSelectPlus(TableProduits, iNumLigneSelectionnee)
(--> OK)

// Passage en saisie
RepriseSaisie(TableProduits.Champs1)
(--> PAS OK ????)

--> ne fonctionne pas


Si quelqu'un a la solution... merci de me la communiquer.
Posté le 14 décembre 2004 - 16:05
Bon bien désolé, j'ai une autre solution que vous pouvez essayer :

TableInsèreLigne(nomTable,TableSelect(nomTable))
TableSelectPlus(nomTable,TableSelect(nomTable)-1)
RepriseSaisie(NomPremièreColonne)

Alors, ça marche???

ocin.
Posté le 14 décembre 2004 - 16:17
Le comportement est exactement le même: reprise de la saisie dans la ligne qui suit ???

Je n'y comprends rien.
Posté le 14 décembre 2004 - 16:49
Je t'avoue que je ne comprends pas pourquoi ça ne fonctionne pas.
Moi j'ai testé le code que je t'ai envoyé et il fonctionne très bien.
J'ai tout d'abord créé une table à 2 colonnes que j'ai remplit par programmation (environ 10 lignes) puis j'ai créé un bouton dans lequel j'ai inséré le code que je t'ai donné.
Lorsque je clique sur le bouton, une ligne blanche s'insère au-dessus de la ligne sélectionnée puis le curseur de saisie se trouve sur ma première colonne.

Si tu veux plus de détail, je t'invite à me donner ton email pour qu'on essaye d'arranger cela au plus vite.

Ocin.
Posté le 14 décembre 2004 - 16:56
J'ai trouvé ce qui provoque l'anomalie : la sélection multiple.

Si la table est paramétrée pour une sélection simple, tout fonctionne.

Pourquoi ce la ne fonctionne-t-il pas en sélection multiple : MYSTERE ?

En tout cas merci pour votre aide.
Posté le 14 décembre 2004 - 18:15
Pour une table multi-sélection:

TableInsereLigne(.......)
TableSelectMoins(Table)
Table = indice de la ligne insérée
RepriseSaisie(Table.COL1)