الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Remote Dbgrid - نقل معلومات Dbgrid من السيرفر للكلينت

مغلق
بدأه Swift في 12 سبتمبر 2007 · 3 رد · 811 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

--------------------------------

عندى DBGrid موجودة بالسيرفر مربوطة بقاعدة بيانات عن طريق مكونات Zeos وتعمل جيد جداً

سؤالى هو : كيف يمكن أنا أنقل DbGrid من السيرفر للكلينت من غير ما أعمل كونيكت لقاعدة البيانات من الكلينت ... أنا ممكن أحط أداه ربط من جديد فى الكلينت بس انا عايز أخليها مرتبطة بقاعدة البيانات الموجودة فى السيرفر لأسباب الحماية وممكن لو غيرت الباسوورد للقاعدة لازم أنزل اصدار جديد .

طيب لو قلنا نبعت أمر للكلينت هنكتب ايه فيه ؟

أنا جربت

server.Socket.Connections.SendText('<allaccounts>'+
	  AccountsTable.FieldByName('Name').AsString+'|');

وأستقبلتة فى الكلينت عن طريق

  if Search.AccountTable.Columns[0].FieldName = 'Name' then
	 begin
Search.RxMemoryData1.Append;
Search.RxMemoryData1.FieldByName('Name').AsString := AccountC[0];
Search.RxMemoryData1.Post;
	end;

بس المشكلة أنة بيبعت أول بيان فقط دون إستقبال كافة الحقل

أتمنى أنى تكون مشكلتى واضحة ومشكورين

Comming Soon

#2

لترسل اكتب شيئ مثل هذا

Var s:String;
...
...
s:='<allaccounts>';
AccountsTable.First;

Repeat
s:=s+AccountsTable.FieldByName('Name').AsString+'|';
AccountsTable.Next;
Until AccountsTable.EOF;

server.Socket.Connections.SendText(s);

وبالتوفيق في تكملة ما توقف عنده غيرك

d4baa0.gif
#3

جزاك الله كل خير B.M.AbdelAziZ

اقتباس
وبالتوفيق في تكملة ما توقف عنده غيرك

إجابة صريحة .. ربنا يوفقنا جميعاً

حسناً أنا قمت بالأتى

 
var M:String;
 if pos('<AccountU>',buf)=1 then
  begin
  delete(buf,1,10);
  reg:=TStringList.Create;
   for I:=1 to 3 do
  begin
  reg.Add(Copy(buf,1,pos('|',buf)-1));
  memo1.Lines.Add(reg[i-1]);
  delete(buf,1,pos('|',buf));
  end;
  M:='<AccountOK>';
AccountsTable.First;
Repeat
M:=M+AccountsTable.FieldByName('Name').AsString+'|';
AccountsTable.Next;
Until AccountsTable.EOF;
		n:=socket.SocketHandle;
  for i := 0 to Server.Socket.ActiveConnections - 1 do
  begin
	if Server.Socket.Connections.SocketHandle = n then
	begin
	 rserver.Socket.Connections.SendText(M);
	  form1.Caption:=inttostr(i);
	end;
	  end;
	end;

يرسل أول بيان فقط .... وأنا بلاحظ فى DBGrid الــ Row السهم يعنى بينزل لحد ما يوصل لأخر سجل لكن لا يرسل غير الأول فقط

مشكورين للمساعدة .. ورمضان كريم عليكم جميعاً

Comming Soon

#4

تم حل المشكلة والحمد لله

كانت المشكلة بالكلينت .. الكود بالأسفل

if Search.AccountTable.Columns[0].FieldName = 'Name' then
	 begin
Search.RxMemoryData1.Append;
Search.RxMemoryData1.FieldByName('Name').AsString := copy(buf,1,pos('|',buf)-1);
Search.RxMemoryData1.Post;
	end;

Comming Soon

هذا الموضوع مغلق.

مواضيع مشابهة