PDA

View Full Version : راهنمایی برای ساخت جستجو در برنامه



morrteza323
پنج شنبه 30 اردیبهشت 1389, 12:54 عصر
سلام
دوستان عزیز من تو برنامه ام نیاز به جستجو دارم و می خوام وقتی گزینه ی مورد نظرم رو پیدا کرد ادیت اش کنم.برای جستجو در کلید اصلی جدول از دستور

Table1.setkey;
table1.fieldbyname('Code').asstring:=edit1.text;
استفاده کردم.حالا اگه بجوز کلید جدول بخوام جستجو کنم از چه دستوری استفاده کنم؟؟
در ضمن جدول رو هم تو Databse Desktop ساختم.

BORHAN TEC
پنج شنبه 30 اردیبهشت 1389, 14:05 عصر
Database Desktop چیه؟
منظورتون MyBase است؟

BORHAN TEC
پنج شنبه 30 اردیبهشت 1389, 14:41 عصر
اگه از Mybase استفاده می کنی به یک کنترل TClientDataSet و یک کنترل TDataSource نیاز داری. که باید خاصیت DataSet مربوط به کنترل TDataSource رو به کنترل ClientDataSet مورد نظر ست کنی. سپس باید خاصیت FileName و ّFieldDefs مربوط به کنترل ClientDataSet رو تنظیم کنی. سپس بر روی کنترل ClientDataSet کلیک راست کن و سپس گزینه Create DataSet رو انتخاب کن. با این کار خاصیت Active مربوط به کنترل DataSet به True تغییر می کند. سپس برنامه رو اجرا کن و برنامه را ببند. با این کار فایل مورد نظر در مسیری که قبلاً مشخص کرده ایم ساخته می شود. دقت کنید که فایل نباید از قبل وجود داشته باشد و پسوند آن هم حتماً باید xml ویا cds باشد که من دومین پسوند را پیشنهاد می کنم، چون حجم آن تقریبا نصف فایل xml است. بعد از انجام این کار ها خاصیت Active مربوط به ClientDataSet را در زمان طراحی به False تغییر دهید.سپس فایل ساخته شده (با پسوند xml و یا cds) را به کنار فایل اجرایی پروژه ساخته شده خودتان منتقل کنید. سپس در رویداد Create مربوط به برنامه از کد زیر استفاده کنید.

procedure TForm1.FormCreate(Sender: TObject);
begin
ClientDataSet1.FileName := ExtractFilePath(Application.ExeName)
+ 'myFile.cds';
ClientDataSet1.Open;
end;
با این کار مادامی که فایل DataBase کنار برنامه باشد مشکلی پیش نمی آید.
سپس بسته به فیلدهای موجود در DataBase تعدادی کنترل DBEdit روی فرم بیاندازید و خاصیت های DataSource و DataField آنها را تنظیم کنید.
سپس برای جستجو می توانید به عنوان مثال از کد زیر استفاده کنید.

ClientDataSet1.CommandText := 'Select * From myTable where Name = Ali';
همان گونه که می بینید بعد از اجرای دستور بالا محتوی رکوردی که پیدا شده است در درون کنترل های DbEdit به نمایش در می آید. حالا می توانید مقادیر فیلدهای این رکورد را تغییر بدهید و سپس برای ذخیره این مقادیر می توانید از کد زیر استفاده کنید.

ClientDataSet1.ApplyUpdates(0);
اگر باز هم سوالی پیش اومد ما در خدمتیم.:لبخند:

morrteza323
پنج شنبه 30 اردیبهشت 1389, 16:04 عصر
با تشکر از شما دوست عزیز اما چیزایی که شما گفتید خیلی سخت می شد.من ازکد های زیر استفاده کردم.

begin
flag:=false;
Table1.First;
while(not Table1.Eof) and (flag=false) do
if Table1.FieldByName('Capacity').AsString = Edit2.Text then
flag:=true
else Table1.Next;
if flag=false then ShowMessage('Not Found');

راستی DataBase Desktop برنامه ای که همراه با دلفی 7 نصب میشه.چون Access و Sql Server رو ویندوز 7 کار نمی کرد به اجبار از این استفاده کردم

pezhvakco
پنج شنبه 30 اردیبهشت 1389, 17:38 عصر
درود :
پرسش شما مربوط میشه به بخش بانک های اطلاعاتی در دلفی .


در ضمن جدول رو هم تو Databse Desktop ساختم.
این برنامه که شما گفتین، برای ساخت و ویرایش انواع بانک های اطلاعاتی استفاده میشه .
مانند پارادکس، فاکس پرو و ... و خودش بانک اطلاعاتی نیست .


چیزایی که شما گفتید خیلی سخت می شد.من ازکد های زیر استفاده کردم
کد ها سخت نیست، برای کار با بانک اطلاعاتی، بنا به نوع آن ها باید از کد دستورات مربوط به خودش استفاده کنی تا سرعت کار بالا بره .


چون Access و Sql Server رو ویندوز 7 کار نمی کرد به اجبار از این استفاده کردم
مگه میشه کار نکنه .
نسخه های مخصوص به اون سیستم عامل رو نصب کن تا کار کنه .

فکر خوش .

حسین شهریاری
پنج شنبه 30 اردیبهشت 1389, 20:33 عصر
یادم میاد چند سال پیش توی پارادکس اینطوری جستجو میکردیم.امتحان کنین ببینین کار میده یا نه؟

table.setkey;
if table.fieldbyname('code').asinteger=edit.text then
table.gotokey;