02-05-2021, Saat: 00:28
hi every one
can some one help me with problem
I'm using Delphi REST with server and client but when i tried to show data on the client side its show only one row for some reason,
what did i do wrong?
PS: I'm using Delphi roi and restdataware
the video down show what I'm deal with; any help will be very appreciated ^^ thank you
on the client side i'm using this code
procedure listv; var jsonObj: TJsonObject;
json, sucesso, erro, id_store, nom_store, phone_saler: string;
begin // FrmLogin.FloatAnimation2.Stop;
// FrmLogin.FloatAnimation 3.Stop;
if FrmLogin.listvreq.Response.JSONValue = nil then
begin
// FrmLogin.ExibirCampos;
ShowMessage ('خطأ في إنشاء الحساب (JSON غير صالح)');
exit;
e nd;
try
json: = FrmLogin.listvreq.Response.JSONValue.ToString;
jsonObj: = TJSONObject.ParseJSONValue (TEncoding.UTF8.GetBytes (json), 0) as TJSONObject;
sucesso: = jsonObj.GetValue ('sucesso'). Value;
erro: = jsonObj.GetValue ('erro'). Value;
id_store: = jsonObj.GetValue ('id_store'). Value;
nom_store: = jsonObj.GetValue ('nom_store'). Value;
if sucesso <> 'S' then
begin
// FrmLogin.ExibirCampos;
ShowMessage (erro);
exit;
end
else
// showmessage ('تم احضار بيانات:' + id_store + nom_store);
// FrmLogin.ExibirCampos; ///
// FrmLogin.ListView1.Items.Clear ();
finally
jsonObj.DisposeOf;
end;
end;
procedure listverr (Sender: TObject);
begin
if Assigned (Sender) and (Sender is Exception) then
begin
// FrmLogin.ExibirCampos;
showmessage (Exception (Sender) .Message);
end;
end;
procedure TFrmLogin.StartLogin2;
begin
TThread.CreateAnonymousThread (
procedure
var
Success: Boolean;
begin
try
RequestLogin.Execute;
Success: = RequestLogin.Response.Status.Success;
except
Success: = False;
end;
TThread.Queue (nil,
procedure
begin
AfterLogin2 (Success);
end
);
end
) .Start;
end;
procedure TFrmLogin.AfterLogin2 (Success: Boolean);
begin
if Success then
begin
listvreq.Params.Clear;
listvreq.AddParameter ('type_store', ComboBox1.Selected.Text); /// ****
listvreq.ExecuteAsync (listv, true, true, listverr);
end
else
begin
showmessage ('عفوا ...! لايمكن الاتصال بالخادم حاليا يرجى المحاولة لاحقا')
end;
on server side:
procedure Tdm.DWEventsEventslistvReplyEvent (var Params: TDWParams; var Result: string);
var type_store, erro: string;
usuario: TUsuario;
json: TJsonObject;
begin
try
sleep (4000);
type_store: = Params.ItemsString ['type_store']. AsString;
json: = TJsonObject.Create;
usuario: = TUsuario.Create (dm.conn);
usuario.type_store: = type_store;
if NOT usuario.listv (erro) then
begin //
{"sucesso": "N", "erro": "Usu ل rio n م o informado", "codusuario": "0"}
json.AddPair ('sucesso', 'N' );
json.AddPair ('erro', erro);
json.AddPair ('id_store', '');
json.AddPair ('nom_store', '');
end else begin
json. AddPair ('sucesso', 'S');
json.AddPair ('erro', '');
json.AddPair ('id_store', usuario.id_store.ToString);
json.AddPair ('nom_store', usuario.nom_store);
end;
Result: = json.ToString;
finally
json.DisposeOf;
usuario.DisposeOf;
end;
and in class i add called unit usuario
function TUsuario.listv (out erro: string): Boolean;
var qry: TFDQuery;
begin try
qry: = TF DQuery.Create (nil);
qry.Connection: = FConn;
with qry do begin
Active: = false;
SQL.Clear; SQL.Add ('SELECT * from saler WHERE type_store =: any');
ParamByName ('any'). Value: = type_store;
Active: = true;
if RecordCount> 0 then
begin
id_store: = FieldByName ('id_store'). AsInteger;
nom_store: = FieldByName ('nom_store'). AsString;
erro: = '';
Result: = true;
end
else
begin
// id_store: = 0;
erro: = 'تعذر جلب بيانات المعلنين';
Result: = false;
end;
DisposeOf;
end;
except on ex: exception do
begin
erro: = 'ت في التحقق من صحة تسجيل الدخول:' + ex.Message;
Result: = false;
end;
end;
can some one help me with problem
I'm using Delphi REST with server and client but when i tried to show data on the client side its show only one row for some reason,
what did i do wrong?
PS: I'm using Delphi roi and restdataware
the video down show what I'm deal with; any help will be very appreciated ^^ thank you
on the client side i'm using this code
procedure listv; var jsonObj: TJsonObject;
json, sucesso, erro, id_store, nom_store, phone_saler: string;
begin // FrmLogin.FloatAnimation2.Stop;
// FrmLogin.FloatAnimation 3.Stop;
if FrmLogin.listvreq.Response.JSONValue = nil then
begin
// FrmLogin.ExibirCampos;
ShowMessage ('خطأ في إنشاء الحساب (JSON غير صالح)');
exit;
e nd;
try
json: = FrmLogin.listvreq.Response.JSONValue.ToString;
jsonObj: = TJSONObject.ParseJSONValue (TEncoding.UTF8.GetBytes (json), 0) as TJSONObject;
sucesso: = jsonObj.GetValue ('sucesso'). Value;
erro: = jsonObj.GetValue ('erro'). Value;
id_store: = jsonObj.GetValue ('id_store'). Value;
nom_store: = jsonObj.GetValue ('nom_store'). Value;
if sucesso <> 'S' then
begin
// FrmLogin.ExibirCampos;
ShowMessage (erro);
exit;
end
else
// showmessage ('تم احضار بيانات:' + id_store + nom_store);
// FrmLogin.ExibirCampos; ///
// FrmLogin.ListView1.Items.Clear ();
finally
jsonObj.DisposeOf;
end;
end;
procedure listverr (Sender: TObject);
begin
if Assigned (Sender) and (Sender is Exception) then
begin
// FrmLogin.ExibirCampos;
showmessage (Exception (Sender) .Message);
end;
end;
procedure TFrmLogin.StartLogin2;
begin
TThread.CreateAnonymousThread (
procedure
var
Success: Boolean;
begin
try
RequestLogin.Execute;
Success: = RequestLogin.Response.Status.Success;
except
Success: = False;
end;
TThread.Queue (nil,
procedure
begin
AfterLogin2 (Success);
end
);
end
) .Start;
end;
procedure TFrmLogin.AfterLogin2 (Success: Boolean);
begin
if Success then
begin
listvreq.Params.Clear;
listvreq.AddParameter ('type_store', ComboBox1.Selected.Text); /// ****
listvreq.ExecuteAsync (listv, true, true, listverr);
end
else
begin
showmessage ('عفوا ...! لايمكن الاتصال بالخادم حاليا يرجى المحاولة لاحقا')
end;
on server side:
procedure Tdm.DWEventsEventslistvReplyEvent (var Params: TDWParams; var Result: string);
var type_store, erro: string;
usuario: TUsuario;
json: TJsonObject;
begin
try
sleep (4000);
type_store: = Params.ItemsString ['type_store']. AsString;
json: = TJsonObject.Create;
usuario: = TUsuario.Create (dm.conn);
usuario.type_store: = type_store;
if NOT usuario.listv (erro) then
begin //
{"sucesso": "N", "erro": "Usu ل rio n م o informado", "codusuario": "0"}
json.AddPair ('sucesso', 'N' );
json.AddPair ('erro', erro);
json.AddPair ('id_store', '');
json.AddPair ('nom_store', '');
end else begin
json. AddPair ('sucesso', 'S');
json.AddPair ('erro', '');
json.AddPair ('id_store', usuario.id_store.ToString);
json.AddPair ('nom_store', usuario.nom_store);
end;
Result: = json.ToString;
finally
json.DisposeOf;
usuario.DisposeOf;
end;
and in class i add called unit usuario
function TUsuario.listv (out erro: string): Boolean;
var qry: TFDQuery;
begin try
qry: = TF DQuery.Create (nil);
qry.Connection: = FConn;
with qry do begin
Active: = false;
SQL.Clear; SQL.Add ('SELECT * from saler WHERE type_store =: any');
ParamByName ('any'). Value: = type_store;
Active: = true;
if RecordCount> 0 then
begin
id_store: = FieldByName ('id_store'). AsInteger;
nom_store: = FieldByName ('nom_store'). AsString;
erro: = '';
Result: = true;
end
else
begin
// id_store: = 0;
erro: = 'تعذر جلب بيانات المعلنين';
Result: = false;
end;
DisposeOf;
end;
except on ex: exception do
begin
erro: = 'ت في التحقق من صحة تسجيل الدخول:' + ex.Message;
Result: = false;
end;
end;

