Zamknij=wyloguj

0

Witam! Mam problem mały :)
Chcę, aby podczas zamykania program wysłał informację do bazy dancyh, że człowiek jest wylogowany i coś mi nie idzie. Aktualnie wygląda to tak:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    SQL.CommandText := Format('UPDATE users SET aktywny="0" WHERE login="%s"', [loggedas.caption]);
  SQL.ExecSQL(True);
end;

Co mam zrobić, żeby zadziałało? :(

0

A spróbuj to zrobić przez CloseQuery:

procedure TForm1.FormCloseQuery(Sender: TObject; var Action: TCloseAction);
begin
  CanClose:=False;
  SQL.CommandText := Format('UPDATE users SET aktywny="0" WHERE login="%s"', [loggedas.caption]);
  SQL.ExecSQL(True);
  CanClose:=True; //Raczej nie potrzebne
  Form1.Close;
end;
0

Nadal nic, może to jakiś problem w kodzie :(

0

Może kod wam pomoże w zdiagnozowaniu problemu.
Jest to kod formy 1, są jescze 2,3 i 4 z czego form4 odnosi sie do form1 z takim poleceniem:

with Form1 do
       begin
         SQL.CommandText := 'SELECT kasa FROM users WHERE login = '+ QuotedStr(login.Text);
         SQL.Open;
         stankonta.caption:=(SQL.FieldValues['kasa']);
         loggedas.caption:=login.Text;
         logged:=true;
         zalogowany.Caption:='tak';
         SQL.Close;
         SQL.CommandText := Format('UPDATE users SET aktywny="1" WHERE login="%s"', [login.Text]);
         SQL.ExecSQL(True);
         LoadTable;
       end;

Natomiast to jest kod formy1:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, DBXpress, FMTBcd, DB, SqlExpr, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Program1: TMenuItem;
    N1: TMenuItem;
    Zalogujsi1: TMenuItem;
    Zakocz1: TMenuItem;
    N2: TMenuItem;
    Pienidze1: TMenuItem;
    Wp1: TMenuItem;
    Wyplac1: TMenuItem;
    Gra1: TMenuItem;
    Zasady1: TMenuItem;
    Pomoc1: TMenuItem;
    Stronadomowa1: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    MySQL: TSQLConnection;
    SQL: TSQLDataSet;
    Label1: TLabel;
    loggedas: TLabel;
    Wylogujsi1: TMenuItem;
    N5: TMenuItem;
    stankontalbl: TLabel;
    stankonta: TLabel;
    gracze: TListView;
    Label2: TLabel;
    StatusBar1: TStatusBar;
    liczbagraczy: TLabel;
    zalogowany: TLabel;
    procedure N1Click(Sender: TObject);
    procedure Zakocz1Click(Sender: TObject);
    procedure Zalogujsi1Click(Sender: TObject);
    procedure Wylogujsi1Click(Sender: TObject);
    procedure LoadTable;
    procedure FormCloseQuery(Sender: TObject; var Action: TCloseAction);
  private
  
  public
    { Public declarations }
   
  end;

var
  Form1: TForm1;
  zbanowany: integer;
  logged: boolean;
  canclose: boolean;

implementation

uses Unit2, Unit4;

{$R *.dfm}
                

procedure TForm1.LoadTable;
var
  i : Integer;
  ListItem : TListItem;
begin
  gracze.Items.Clear;
  SQL.CommandText := 'SELECT * FROM users ORDER BY kasa DESC'; // zapytanie
  SQL.Open; // odczytaj dane

  for I := 1 to SQL.RecordCount do
  begin
  { dodaj kolejne wartości }
    ListItem := gracze.Items.Add;
    ListItem.Caption := (SQL.FieldValues['login']);
    ListItem.SubItems.Add(SQL.FieldValues['kasa']);
    ListItem.SubItems.Add(SQL.FieldValues['stan']);
    SQL.Next;
  end;

  SQL.Close;
end;



procedure TForm1.N1Click(Sender: TObject);
begin
   Form2.Show
end;

procedure TForm1.Zakocz1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Zalogujsi1Click(Sender: TObject);
begin
Form4.show;
end;




procedure TForm1.Wylogujsi1Click(Sender: TObject);
begin
  logged:=false;
  SQL.CommandText := Format('UPDATE users SET aktywny="0" WHERE login="%s"', [loggedas.caption]);
  SQL.ExecSQL(True);
  loggedas.caption:='';
  stankonta.caption:='';
  
end;



procedure TForm1.FormCloseQuery(Sender: TObject; var Action: TCloseAction);
begin
  CanClose:=False;
  SQL.CommandText := Format('UPDATE users SET aktywny="0" WHERE login="%s"', [loggedas.caption]);
  SQL.ExecSQL(True);
  CanClose:=True; //Raczej nie potrzebne
  Form1.Close;
end;



end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1