Добры день! Подскажите пожалуйста как сохранить пользователей чата в базу данных акссес вот код:
unit yadro;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, IdUDPClient,
IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, FMX.StdCtrls, FMX.Edit,
FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, IdGlobal, IdSocketHandle,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Phys, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.Phys.MSAcc, FireDAC.Phys.MSAccDef,
FireDAC.FMXUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
FireDAC.DApt, System.Rtti, FMX.Grid.Style, Data.Bind.EngExt,
Fmx.Bind.DBEngExt, Fmx.Bind.Grid, System.Bindings.Outputs, Fmx.Bind.Editors,
Data.Bind.Components, Data.Bind.Grid, Data.Bind.DBScope, FMX.Grid, Data.DB,
FireDAC.Comp.DataSet, FireDAC.Comp.Client;
type
TForm2 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
IdUDPServer1: TIdUDPServer;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
Timer1: TTimer;
FDManager1: TFDManager;
FDConnection1: TFDConnection;
FDQuery1: TFDQuery;
DataSource1: TDataSource;
StringGrid1: TStringGrid;
BindSourceDB1: TBindSourceDB;
BindingsList1: TBindingsList;
LinkGridToDataSourceBindSourceDB1: TLinkGridToDataSource;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
LinkControlToField1: TLinkControlToField;
LinkControlToField2: TLinkControlToField;
LinkControlToField3: TLinkControlToField;
LinkControlToField4: TLinkControlToField;
Timer2: TTimer;
Label5: TLabel;
procedure IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Openstr();
procedure Closestr();
procedure Change();
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
S:string;
s1,s2,s3:String;
d:integer;
SD:boolean;
implementation
{$R *.fmx}
procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.IdUDPServer1.Active:=true;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Form2.IdUDPServer1.Active:=false;
end;
procedure TForm2.Button4Click(Sender: TObject);
begin
FDQuery1.Insert;
end;
procedure TForm2.Button5Click(Sender: TObject);
begin
FDQuery1.Post;
end;
procedure TForm2.Button6Click(Sender: TObject);
begin
FDQuery1.Delete;
end;
procedure TForm2.Change;
begin
FDQuery1.DataSource.DataSet.Locate('Login',label3.Text,[lopartialkey]);
if (label3.Text<>edit2.Text) then
SD:=true
else
SD:=false;
end;
procedure TForm2.Closestr;
begin
FDQuery1.Post;
end;
procedure TForm2.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
const AData: TIdBytes; ABinding: TIdSocketHandle);
var
ss:TStringStream; //сохранять буквы будем тут
s,buff:String; //вспомогательные переменные
begin
ss:=TStringStream.create(''); //создаем пустую строку
ss.write(adata[0],length(adata)); //записываем в нее данные из потока байт
s:=ss.DataString; //преобразовываем ее в текст
ss:=TStringStream.create(''); //создаем пустую строку
ss.write(adata[0],length(adata)); //записываем в нее данные из потока байт
s:=ss.DataString; //преобразовываем ее в текст
Memo1.Lines.Add(s); // если кракоз¤бры то пробуем Utf8ToAnsi и т д (но у мен¤ и так работает)
ss.free;//очищаем строку от мусора
S1:=s;
S2:=s;
delete(S1,1,4);
delete(S2,4,Length(S2));
label3.Text:=S1;
label4.Text:=S2;
end;
procedure TForm2.Openstr;
begin
FDQuery1.Insert;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
if form2.IdUDPServer1.Active=true then
begin
label2.Text:='Server On - port 8488';
end
else
label2.Text:='Server Off';
end;
procedure TForm2.Timer2Timer(Sender: TObject);
begin
if (label3.Text.Length<>0) and (label4.Text.Length<>0) then
Form2.Change;
if SD=true then
begin
d:=strtoint(label4.Text);
case d of
0:begin
FDQuery1.Insert;
label5.Text:=inttostr(d);
edit2.Text:=label3.Text;
label3.Text:='';
label4.Text:='';
end;
100:begin
label5.Text:=inttostr(d);
edit3.Text:=label3.Text;
edit4.Text:='User';
label3.Text:='';
label4.Text:='';
FDQuery1.Post;
end;
end;
End;
end;
end.
Компиляци япроходит успешно при попыте сохранить выдает вот что:
подозеваю чтопроблема вот в этом кусочке
FDQuery1.DataSource.DataSet.Locate('Login',label3.Text,[lopartialkey]);
if (label3.Text<>edit2.Text) then
Потому, что когда убираю проблема исчезает, но сохранение в базу данных непроисходит по-прежнему. Появляеться пустая строка и все.
Если пробовать писать руками в эдиты все норм сохраняет.