PDA

View Full Version : نمایش بانک اطلاعاتی



ابوالفضل عباسی
یک شنبه 17 آبان 1394, 14:47 عصر
با سلام
شاید برای شما هم اتفاق افتاده می خواهید در اندروید یا ios از بانک اطلاعاتی استفاده کنید ولی بدلیل عدم وجود DBGrid در اندروید صرف نظر کرده باشید ولی الان با روشی جایگزین (اما با event های کمتر)میتونید بانک اطلاعاتی رو در اندروید نمایش بدهید چگونه؟؟!! به ادامه مطلب توجه کنید.
بسم الله الرحمن الرحیم
برای شروع اول باید یک بانک اطلاعاتی رو انتخاب کنید که هم دلفی پشتیبانی کنه و هم بشه در اندروید استفاده کرد باید از این 2 گزینه یکی رو انتخاب کنید(SQLite یا IBLite)نظر بنده با SQLite هست.با نرم افزار SQLite Expert Professional میتونید بانک sqlite بسازید.(بانکش مثل sql server هست):لبخند:
بعد باید این 3 کامپوننت رو در برنامه تون بگذارید FDTable,FDConnection,FDGUIxWaitCursor
در این مرحله در رخداد onshow فرم اصلی این فرمان ها رو بگذارید تا بانک خونده بشه:

FDConnection1.Params.Text:=''; FDConnection1.DriverName:='SQLite';
FDConnection1.ConnectionDefName:='SQLite_Demo';
FDConnection1.Params.Database:='/sdcard/newfolder/MessageData.db3';
try
FDConnection1.Connected:=true;
if FDConnection1.Connected then
begin
FDTable1.TableName:='table1';
FDTable1.Active:=true;
end;
except
ShowMessage('اتصال بانک برقرار نشد');
end;
در اندروید مسیر حافظه اصلی با sdcard شناخته میشه و به جای MessageData.db3 اسم بانکتون که در گوشی وجود داره قرار میدهید و بجای table1 اسم بانک هست.
خب اینطوری بانک توسط گوشی خونده میشه.
حال این 2 کامپوننت رو در برنامه تون قرار دهید: stringgrid,BindSourceDB
بعد بخش dataset کامپوننت bindsource رو به بانکتون مثلا fdtable1 وصل کنید.
روی string grid کلیک کنید و به بخش LiveBindings بروید و روی آن کلیک و bind visually بزنید و در پایین دلفی یه بخشی می آید روی ابجکت stringgrid کلیک کنید و اون فیلد که ستاره دارد (*) رو به bind source که (*)دارد وصل کنید مانند تصویر زیر:
136553
خب حالا بانک رو در string grid میتونید ببینید حتی موقع اجرا میتونید به بانکتون فیلد جدید اضافه کنید و فیلدی رو تغییر دهید و در بانک ذخیره و اعمال شود:کف::لبخند:
درضمن اول در ویندوز کامپایل کنید اگر برنامه مشکلی نداشت برای اندروید یا ios کامپایل کنید.
این روش در datasnap جواب گو نیست کمی فرمان دارد اگر کسی خواست بگویید تا برایتان شرح دهم.
منتظر سوالاتتون و مشکلاتتون و انتقادتون درمورد این تاپیک میباشم.(برای شادی روح اموات و شهدا یه صلوات بفرستید)

دست علی یار و همراهتان:تشویق:
برای فارسی سازی یک یونیت رو دوست عزیزم niceboy درست کرده اون میتونه مشکل فارسی سازی رو تاحدودی حل کنه و تازه در بانک اطلاعاتی و این string grid فارسی درست نشون داده میشه ولی در گذاشتن علامت هایی چون (.,/{}-=*&#@#!$^%)کمی مشکل داره

ابوالفضل عباسی
چهارشنبه 04 آذر 1394, 11:59 صبح
درضمن این نکته رو متذکر میشوم که این دقیقا مانند dbgrid در ویندوز عمل میکند با این تفاوت که خودش بعد از ثبت کردن بانک خودش بانک رو براساس کد sort میکنه.
ولی این string grid یک معایبی که داره این هست که on Change وجود نداره و برخی از قابلیت های کاربردی که dbgrid داره ولی string grid نداره.
اساسا string grid برای اتصال به بانک نیست.بلکه جدولی هست که خودتون بسازید ولی در اندروید از هیچی بهتره:چشمک:.
چون در اندروید اگر نخواهید از string grid استفاده کنید مجبورید با panel و Frame یه dbgrid بسازید و این خودش یعنی چرخ رو بسازید(من خودم از روش string grid خبر نداشتم وقت صرف کردم و با frame یه dbgrid ساختم و وقتی دیدم با string grid هم میشده کلی ناراحت شدم که تحقیق نکرده وقت صرف یه چیز الکی کردم.:ناراحت: ولی ارزش تجربه کردنش رو داشت.)

موفق باشید دست علی همراهتان

e_q_sun
شنبه 18 شهریور 1396, 17:20 عصر
سلام دوستان.چند تا راهنمایی میخواستم
من دیتا بیس رو به برنامم اضافه کردم
اول اینکه آدرس دیتا بیس رو چجوری واسه آندروید تعریف کنم
ینی من الان دارم توی ویندوز برنامه مینویسم و دیتابیسم توی یه آدرس خاصه حالا وقتی کامپایل میکنم چجوری باید واسه برنامم مشخص کنم که دیتا بیس توی چه آدرسیه
دوم اینکه واسه اینکه بتونم کاری کنم با نصب برنامه توی گوشی دیتابیس هم باهاش اضافه بشه چکار باید بکنم
سوم اینکه دستورات اضافه کردن رکورد و حذف کردن و... چیه
ممنون

nice boy
یک شنبه 19 شهریور 1396, 07:42 صبح
آدرس دیتابیس به صورت زیر هست
{$IFDEF Android}
FullPath := TPath.Combine(TPath.GetHomePath, DBName);
{$ENDIF}

برای انتقال فایل به دیتابیس باید در قسمت Project -> Deploment فایل مربوطه رو اضافه کنی و مسیر بهش بدی
بهتره مسیر .\assets\internal\ رو بهش بدی

حذف و اضافه کردن رکود هم که مثل ویندوز هست فرقی نمی کنه. از FireDac استفاده کن

e_q_sun
یک شنبه 19 شهریور 1396, 09:35 صبح
آدرس دیتابیس به صورت زیر هست
{$IFDEF Android}
FullPath := TPath.Combine(TPath.GetHomePath, DBName);
{$ENDIF}



این دستور رو کجا باید اضافه کنم؟

nice boy
دوشنبه 20 شهریور 1396, 07:54 صبح
var FullPath: string;
DBName: string;
begin
Result := False;
try
DBName := 'testdb.db';
{$IFDEF Android}
FullPath := TPath.Combine(TPath.GetHomePath, DBName);
{$ENDIF}
{$IFDEF MSWINDOWS}
FullPath := '..\' + DBName;
{$ENDIF}
if FileExists(FullPath) then
begin


FDConnection1.LoginPrompt := False;
FDConnection1.Params.Clear;
FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database='+ FullPath);
FDConnection1.Open;
Result := True;
end
else
begin


end;
except
on E: Exception do
begin


end;
end;


end;

e_q_sun
دوشنبه 20 شهریور 1396, 08:17 صبح
var FullPath: string;
DBName: string;
begin
Result := False;
try
DBName := 'testdb.db';
{$IFDEF Android}
FullPath := TPath.Combine(TPath.GetHomePath, DBName);
{$ENDIF}
{$IFDEF MSWINDOWS}
FullPath := '..\' + DBName;
{$ENDIF}
if FileExists(FullPath) then
begin


FDConnection1.LoginPrompt := False;
FDConnection1.Params.Clear;
FDConnection1.Params.Add('DriverID=SQLite');
FDConnection1.Params.Add('Database='+ FullPath);
FDConnection1.Open;
Result := True;
end
else
begin


end;
except
on E: Exception do
begin


end;
end;


end;

ممنون از راهنماییتون

لطفا اگر یه برنامه ساده که دیتابیست بهش معرفی شده باشه و مثلا رکورد بشه اضافه کرد یا حذف کرد دارید برام بفرستید
میخوام از طریق اون الگو برداری کنم تا بتونم هم یه چیزی یاد بگیرم هم برنامه خودمو کامل کنم

ممنون میشم

ابوالفضل عباسی
چهارشنبه 22 شهریور 1396, 10:27 صبح
دوست عزیز.
دیگه همه چیز گفته شده.دیگه فقط کافیه خودتون بنویسید.

در پوشه sample های دلفی نمونه برنامه زیاد هست،به آنجا رجوع کنید.

soks_sia
پنج شنبه 14 دی 1396, 15:24 عصر
سلام دوستان.

آیا راهی وجود داره که بشه به بانک اطلاعاتی sql server وصل شد. از طریق شبکه یا اینترنت؟ من از دلفی توکیو استفاده میکنم

ممنون میشم راهنمایی کنین

nice boy
جمعه 15 دی 1396, 19:54 عصر
سلام دوستان.

آیا راهی وجود داره که بشه به بانک اطلاعاتی sql server وصل شد. از طریق شبکه یا اینترنت؟ من از دلفی توکیو استفاده میکنم

ممنون میشم راهنمایی کنین
بله با استفاده از firedac میشه

ابوالفضل عباسی
پنج شنبه 07 فروردین 1399, 10:47 صبح
سلام دوستان.

آیا راهی وجود داره که بشه به بانک اطلاعاتی sql server وصل شد. از طریق شبکه یا اینترنت؟ من از دلفی توکیو استفاده میکنم

ممنون میشم راهنمایی کنین

کافیست Fdconnection قسمت driverid رو روی mssql قرار داده، سرور و یوزر و پسورد رو بهش بدین تا کانکت بشه.