procedure TMainForm.exec(DataSet: TSQLQuery);
var
i: integer;
begin
DataSet.SQL.Text:=UTF8ToCP1250(DataSet.SQL.Text);
for i:=0 to DataSet.Params.Count-1 do
begin
if DataSet.Params[i].DataType=ftString then
DataSet.Params[i].AsString:=UTF8ToCP1250(DataSet.Params[i].AsString);
end;
DataSet.ExecSQL;
end;
procedure TMainForm.open(DataSet: TSQLQuery);
var
i: integer;
begin
DataSet.SQL.Text:=UTF8ToCP1250(DataSet.SQL.Text);
for i:=0 to DataSet.Params.Count-1 do
begin
if DataSet.Params[i].DataType=ftString then
DataSet.Params[i].AsString:=UTF8ToCP1250(dataset.Params[i].AsString);
end;
DataSet.Open;
for i:=0 to DataSet.Fields.Count-1 do
begin
if DataSet.Fields[i].DataType=ftString then
begin
DataSet.Fields[i].OnGetText:=@gt;
DataSet.Fields[i].OnSetText:=@st;
end;
end;
end;
procedure TMainForm.gt(Sender: TField; var aText: string; DisplayText: Boolean);
begin
aText:=CP1250ToUTF8(Sender.AsString);
end;
procedure TMainForm.st(Sender: TField; const aText: string);
begin
Sender.AsString:=UTF8ToCP1250(aText);
end;
później w kodzie używasz:
open(Query1); //zamiast: Query1.Open;
//lub
exec(Query1); //zamiast Query1.ExecSQL;
oczywiście jak chcesz pobrać wartość pola do edita to:
edit1.Text:=Query1.FieldByName('nazwa').Text; //a nie Query1.FieldByName('nazwa').AsString;
a jak przekazujesz parametry to:
Query1.ParamByName('nazwa').Text:='abc'; //zamiast Query1.ParamByName('nazwa').AsString