J'ai essayer en créant ces variables, aussi en enlevant les indexes non indispensables de ma table modifiée par l'enregistrement.
mais j'ai toujours la même erreur
J'ai essayer en créant ces variables, aussi en enlevant les indexes non indispensables de ma table modifiée par l'enregistrement.
mais j'ai toujours la même erreur
On reinitialise un Maskedit par un clear
<On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**
En fait, je ne suis plus avec un MaskEdit mais avec un DateTimePicker
mais là n'est plus le problème.
En fait, il faudrait en efet que j'actualise l'affichage du DBGrid en conséquence des changements apportés dans les Edit. Et ceci en repointant sur la ligne changé du DBGrid
Edit_num_dos est unique dans ta base non ?
Donc tu rafraichis la grid et tu fait un locate sur ce numéro.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
et bien il y a plusieurs edit dont la valeur est changée et enregistrée dans la base
chaque edit correspond à la valeur d'un attribut de chaque tuple de la requête d'affichage
Je ne vois pas où est le problème, tu sais utiliser la fonction locate d'un dataset ?
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
euh ben non, j'ai en fait réécrit la fonction telle que tu me la écrite en adaptant cela à mon application.
En gros j'aurai dû mettre [débutant] dans le titre du topic désolé :'(
Oki ^^
Si tu veux faire un locate sur plusieurs champs en même temps.
Tu remarqueras l'utilisation de la fonction VarArrayOf qui est nécessaire lors de la recherche sur plusieurs champs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if Locate('Champ1;Champ2;etc...',VarArrayof([Edit1.text,Edit2.text,EditEtc.Text],[loCaseInsensitive]) then showmessage('Trouvé') else Showmessage('Non Trouvé');
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
quelle galère je n'y arrive vraiment pas !!!!
comment une chose si simple est si difficile à programmer ?!?
montre moi ta requete complète (surtout le nom des champs qui m'interesse) et le nom de ou des edit importants.
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
je mets à jour la table echantillon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9Query_maj UPDATE echantillon SET echantillon.num_dos = :num_dos_change, echantillon.dossier_traite = :dossier_traite_change, echantillon.comment = :comment_change, echantillon.date_traitement = :date_traitement_change WHERE echantillon.identifiant = :echantillon_courant;
Les paramètres :
:num_dos_change
:dossier_traite_change
:comment_change
:date_traitement_change
se référent aux valeurs des 4 Edit
Le paramètre :
:echantillon_courant se référe à l'identifiant de l'échantillon de la requête d'affichage du DBGrid
Suivant le type de produit, je lance telle ou telle requête d'affichage du DBGrid
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Bouton de mise à jour : (appelant la requête de mise à jour) procedure Tfiche_dos_min.ButtonEnregistrementClick(Sender: TObject); begin If ComboBox_produit1.text = '1' Then Begin query_maj.ParamByName('echantillon_courant').AsString := query_dos_min.FieldByName('identifiant').AsString; End Else If ComboBox_produit1.text = '2' Then Begin query_maj.ParamByName('echantillon_courant').AsString := query_dos_min1.FieldByName('identifiant').AsString; End Else If ComboBox_produit1.text = '3' Then Begin query_maj.ParamByName('echantillon_courant').AsString := query_dos_min2.FieldByName('identifiant').AsString; End; Query_maj.ParamByName('num_dos_change').AsString := Edit_num_dos.Text; Query_maj.ParamByName('dossier_traite_change').AsString := Edit_traitement.Text; Query_maj.ParamByName('comment_change').AsString := Memo_comment.Text; Query_maj.ParamByName('date_traitement_change').AsDateTime := DTP_date_traitement.Date; Query_maj.ExecSQL; Query_maj.close; // ici je n'y arrive pas end;
Ensuite j'affecte aux paramètres de la requête de mise à jour les valeurs saisies dans les EDIT.
P.S : Le traitement fonctionne, seulement je n'arrive pas à mettre à jour le DBGrid en conséquence et en "temps réel".
Voilou
Envoyé par Askarodc'est tout ce qu'il y a à faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 With le_Query_de_la_grid do begin Close; Open; Locate('num_dos;dossier_traite',VarArrayOf([Edit_num_dos.Text,Edit_traitement.Text]),[locaseinsensitive]); end;
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
nickel cela fonctionne, désolé pour la longueur du topic et merci à toi Malatar
Bonnes fêtes de fin d'année
Le tout c'est que tu ais compris le fonctionnement du locate ^^Envoyé par Askarod
A toi aussiBonnes fêtes de fin d'année
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager