Malgrès tout se que j'ai pu lire sur le FAQ à propos de cette erreur qui apparament survient souvent je ne suis pas en mesure de rêgler mon problème etant donnée que je suis débutant en delphi et que la notion de destruction d'objet est floue pour moi vu que vient du C# avant delphi.
alor voici le code
ça plante sur la ligne que j'ai pris soin de mettre en rouge.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 procedure TForm1.DBGridLignePieceColExit(Sender: TObject); var ordre_lpi : string; begin if DBGridLignePiece.SelectedIndex = 0 then begin try //Requete permettant la selection de l'ordre_lpi requeteRCP := 'SELECT ORDRE_LPI FROM LIGNE_PIECE,PIECE WHERE LIGNE_PIECE.TYPE_PIE = PIECE.TYPE_PIE AND LIGNE_PIECE.TYPE_PIE ||'+QuotedStr('2610')+'|| LIGNE_PIECE.NUM_PIE = '+QuotedStr(Facturation.DBGridFacturation.SelectedField.Value)+'AND LIBELLE_LPI = '+QuotedStr(DBGridLignePiece.SelectedField.OldValue)+' AND REFERENCE_CLIENT_PIE ='+QuotedStr(Edit1.Text)+' AND MONTANT_UNITAIRE_HT_LPI = '+FloatToStr(DBGridLignePiece.Fields[1].Value)+' GROUP BY ORDRE_LPI'; QueryRefCliPie.Close; QueryRefCliPie.SQL.Clear; QueryRefCliPie.SQL.Add(requeteRCP); QueryRefCliPie.Open; ordre_lpi := QueryRefCliPie.Fields[0].AsString; except on e: exception do showmessage('echec recherche ordre_lpi'+e.Message); end; try //mise a jour du champs libelle_lpi grace a l'ordre_lpi trouvé requeteMAJ := 'UPDATE LIGNE_PIECE SET LIBELLE_LPI = '+QuotedStr(DBGridLignePiece.SelectedField.Value)+' WHERE TYPE_PIE ||'+QuotedStr('2610')+'|| NUM_PIE = '+QuotedStr(Facturation.DBGridFacturation.SelectedField.Value)+' AND ORDRE_LPI = '+ordre_lpi+''; QueryRefCliPie.Close; QueryRefCliPie.SQL.Clear; QueryRefCliPie.SQL.Add(requeteMAJ); QueryRefCliPie.ExecSQL; except on e: exception do showmessage('MAJ libelle_lpi planté'+e.Message); end; end; if DBGridLignePiece.SelectedIndex = 1 then begin try //Requete permettant la selection de l'ordre_lpi requeteRCP := 'SELECT ORDRE_LPI FROM LIGNE_PIECE,PIECE WHERE LIGNE_PIECE.TYPE_PIE = PIECE.TYPE_PIE AND LIGNE_PIECE.TYPE_PIE ||'+QuotedStr('2610')+'|| LIGNE_PIECE.NUM_PIE = '+QuotedStr(Facturation.DBGridFacturation.SelectedField.Value)+'AND LIBELLE_LPI = '+QuotedStr(DBGridLignePiece.SelectedField.OldValue)+' AND REFERENCE_CLIENT_PIE ='+QuotedStr(Edit1.Text)+' AND MONTANT_UNITAIRE_HT_LPI = '+FloatToStr(DBGridLignePiece.Fields[1].Value)+' GROUP BY ORDRE_LPI'; QueryRefCliPie.Close; QueryRefCliPie.SQL.Clear; QueryRefCliPie.SQL.Add(requeteRCP); QueryRefCliPie.Open; ordre_lpi := QueryRefCliPie.Fields[0].AsString; except on e: exception do showmessage('echec recherche ordre_lpi'+e.Message); end; try //mise a jour du champs libelle_lpi grace a l'ordre_lpi trouvé requeteMAJ := 'UPDATE LIGNE_PIECE SET MONTANT_UNITAIRE_HT_LPI = '+DBGridLignePiece.SelectedField.Value+' WHERE TYPE_PIE ||'+QuotedStr('2610')+'|| NUM_PIE = '+Facturation.DBGridFacturation.SelectedField.Value+'AND ORDRE_LPI = '+ordre_lpi+''; QueryRefCliPie.Close; QueryRefCliPie.SQL.Clear; QueryRefCliPie.SQL.Add(requeteMAJ); QueryRefCliPie.ExecSQL; except on e: exception do showmessage('MAJ montant_unitaire_ht_lpi planté'+e.Message); end; end; end;
D'après se que j'ai lu je pense que c'est un objet qui est mal instancié, cependant la variable requeteMAJ est declarée dans la partie globale de mon unité.
de ce fait je suis complètement perdu, et je n'arrive pas a savoir d'où vient le plantage etant donné que l'exception que j'essaye de levé moi même avec le bloc try except ne se déclanche même pas car arrêtée par la notification des exceptions du débogueur.
donc voila je suis perdu
si l'erreur pouvait sauter aux yeux de quelqu'un j'en serais ravi
merci d'avance
Partager