Fermer une fiche à l'aide de Close - Delphi/Pascal - Programmation
MarshPosté le 16-04-2010 à 14:58:15
Bonjour, je suis débutant en Delphi et j'ai du mal à gérer l'ouverture et la fermeture des fiches dites disponibles. je vous copie le code de mes trois fiches avec commentaires. Merci d'avance.
procedure TformClient.btRechercherClick(Sender: TObject); begin with QueryClient do Begin SQL.Clear; Active := False; SQL.Add('select * from client where nomClient = :n and prenomClient = '); paramByName('n').AsString := nomCl.Text; paramByName('p').AsString := prenomCl.Text; Active := True;
if (RecordCount = 0) then ShowMessage('Les coordonnées saisies ne correspondent à aucun client');
End; End;
procedure TformClient.btEnregistrerClick(Sender: TObject); begin with QueryClient do Begin Active := False; SQL.Clear; SQL.Add ('insert into Client (nomClient, prenomClient, adrClient, telClient, date1Achat) values (:n, , :a, :t, )'); paramByName('n').AsString := nomCl.Text; paramByName('p').AsString := prenomCl.Text; paramByName('a').AsString := adrCl.Text; paramByName('t').AsString := telCl.Text; paramByName('d').AsString := dateCl.Text; ExecSql; End; end;
procedure TformClient.DBGrid1CellClick(Column: TColumn); begin FormAppel.numCl.Text := QueryClient.Fields[0].AsString; FormClient.Close; //Erreur de violation d'accès end;
procedure TresultatRequete.quitterResClick(Sender: TObject); begin resultatRequete.Close; //Génère code violation d'accès end;
procedure TresultatRequete.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := CaFree; end;
procedure TresultatRequete.btUpdateClick(Sender: TObject); var reponse : String; begin reponse := inputBox('Mise à jour', 'Entrez la réponse apportée', 'Le problème a été résolu'); with QueryUpdate do begin Active := false; SQL.Clear; SQL.Add('Update appel set reponseApp = :r where NumApp = :n'); paramByName('r').AsString := reponse; paramByName('n').AsString := DBGrid1.Fields[4].AsString; ExecSql; End;
end;
procedure TresultatRequete.FormCreate(Sender: TObject); begin queryRecherche.Active := True; end;
end.
J'ai essayé le Hide à la place de Close mais ne marche pas non plus.
Marsh Posté le 16-04-2010 à 14:58:15
Bonjour,
je suis débutant en Delphi et j'ai du mal à gérer l'ouverture et la fermeture des fiches dites disponibles. je vous copie le code de mes trois fiches avec commentaires.
Merci d'avance.
La fiche Créée automatiquement
unit _gestionAppel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, ExtCtrls, Menus;
type
TFormAppel = class(TForm)
queryAppel: TQuery;
quitter: TButton;
Effacer: TButton;
Enregistrer: TButton;
reponseApp: TMemo;
raisonApp: TMemo;
numCl: TEdit;
dateApp: TEdit;
Label6: TLabel;
Label4: TLabel;
Label1: TLabel;
Label2: TLabel;
MainMenu1: TMainMenu;
Fichier1: TMenuItem;
Quitter1: TMenuItem;
Chercher1: TMenuItem;
pardate1: TMenuItem;
numroclient1: TMenuItem;
probNonresolu: TMenuItem;
Depuisunedatedonne1: TMenuItem;
parnomduclient1: TMenuItem;
procedure EnregistrerClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure numClEnter(Sender: TObject);
procedure EffacerClick(Sender: TObject);
procedure Quitter1Click(Sender: TObject);
procedure probNonresoluClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
FormAppel: TFormAppel;
implementation
uses _gestionClient, _resultatRequete;
{$R *.dfm}
procedure TFormAppel.EnregistrerClick(Sender: TObject);
begin
with queryAppel do
Begin
Active := False;
SQL.Clear;
SQL.Add('Insert into appel (numClient, raisonApp, reponseApp, DateApp)');
SQL.Add (' values (:n, :r, :rp, t)');
paramByName('n').AsString := numCl.Text;
paramByName('r').AsString := raisonApp.Text;
paramByName('rp').AsString := reponseApp.Text;
paramByName('dt').AsString := dateApp.Text;
ExecSql;
End;
end;
procedure TFormAppel.FormCreate(Sender: TObject);
begin
dateApp.Text := DateToStr(Date);
end;
procedure TFormAppel.numClEnter(Sender: TObject);
var C : TFormClient;
begin
C := TFormClient.Create(Self);
C.Show;
end;
procedure TFormAppel.EffacerClick(Sender: TObject);
begin
numCl.Text := '';
raisonApp.Text := '';
reponseApp.Text := '';
end;
procedure TFormAppel.Quitter1Click(Sender: TObject);
begin
FormAppel.Close; // Ne répond pas mais ne génère aucune erreur
end;
procedure TFormAppel.probNonresoluClick(Sender: TObject);
var F : TresultatRequete;
begin
F := TresultatRequete.Create(Self);
F.Show;
End;
end.
FormAppel fiche disponible
unit _gestionClient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls;
type
TformClient = class(TForm)
nomCl: TEdit;
prenomCl: TEdit;
adrCl: TEdit;
telCl: TEdit;
dateCl: TEdit;
LabelNom: TLabel;
LabelPrenom: TLabel;
LabelAdr: TLabel;
LabelTel: TLabel;
LabelDate: TLabel;
btRechercher: TButton;
btEnregistrer: TButton;
btAnnuler: TButton;
DBGrid1: TDBGrid;
LabelResultat: TLabel;
DataSource1: TDataSource;
QueryClient: TQuery;
Quitter: TButton;
procedure btRechercherClick(Sender: TObject);
procedure btEnregistrerClick(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure btAnnulerClick(Sender: TObject);
procedure QuitterClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
formClient: TformClient;
implementation
uses _gestionAppel;
{$R *.dfm}
procedure TformClient.btRechercherClick(Sender: TObject);
begin
with QueryClient do
Begin
SQL.Clear;
Active := False;
SQL.Add('select * from client where nomClient = :n and prenomClient = ');
paramByName('n').AsString := nomCl.Text;
paramByName('p').AsString := prenomCl.Text;
Active := True;
if (RecordCount = 0)
then
ShowMessage('Les coordonnées saisies ne correspondent à aucun client');
End;
End;
procedure TformClient.btEnregistrerClick(Sender: TObject);
begin
with QueryClient do
Begin
Active := False;
SQL.Clear;
SQL.Add ('insert into Client (nomClient, prenomClient, adrClient, telClient, date1Achat) values (:n, , :a, :t, )');
paramByName('n').AsString := nomCl.Text;
paramByName('p').AsString := prenomCl.Text;
paramByName('a').AsString := adrCl.Text;
paramByName('t').AsString := telCl.Text;
paramByName('d').AsString := dateCl.Text;
ExecSql;
End;
end;
procedure TformClient.DBGrid1CellClick(Column: TColumn);
begin
FormAppel.numCl.Text := QueryClient.Fields[0].AsString;
FormClient.Close; //Erreur de violation d'accès
end;
procedure TformClient.btAnnulerClick(Sender: TObject);
begin
nomCl.Text := '';
prenomCl.Text := '';
adrCl.Text := '';
telCl.Text := '';
dateCl.Text := '';
end;
procedure TformClient.QuitterClick(Sender: TObject);
begin
FormClient.Close; //Génère une erreur de violation d'accès
end;
end.
La fiche ResultatRequete disponible également
unit _resultatRequete;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, DB, DBTables;
type
TresultatRequete = class(TForm)
QueryRecherche: TQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
labelResult: TLabel;
DBNavigator1: TDBNavigator;
btUpdate: TButton;
quitterRes: TButton;
QueryUpdate: TQuery;
procedure quitterResClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btUpdateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
resultatRequete: TresultatRequete;
implementation
{$R *.dfm}
procedure TresultatRequete.quitterResClick(Sender: TObject);
begin
resultatRequete.Close; //Génère code violation d'accès
end;
procedure TresultatRequete.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := CaFree;
end;
procedure TresultatRequete.btUpdateClick(Sender: TObject);
var
reponse : String;
begin
reponse := inputBox('Mise à jour', 'Entrez la réponse apportée', 'Le problème a été résolu');
with QueryUpdate do
begin
Active := false;
SQL.Clear;
SQL.Add('Update appel set reponseApp = :r where NumApp = :n');
paramByName('r').AsString := reponse;
paramByName('n').AsString := DBGrid1.Fields[4].AsString;
ExecSql;
End;
end;
procedure TresultatRequete.FormCreate(Sender: TObject);
begin
queryRecherche.Active := True;
end;
end.
J'ai essayé le Hide à la place de Close mais ne marche pas non plus.