View Full Version : بانک اکسس همراه با دستورات SQL ؟
jamjid
دوشنبه 05 شهریور 1386, 14:58 عصر
سلام خدمت دوستان
من تازه کمی با دستورات اس کیو ال آشنا شدم
می خواهم در برنامه هام از بانک اکسس استفاده کنم ولی آنرا با دستورات اس کیو ال کنترل کنم منظورم این است که برای جستجو در بانک از دستورات اس کیو ال استفاده کنم
برای این کار نمی دونم چه کار کنم
یه ADO Query گذاشتم در برنامه ولی هر کار می کنم موفق نمی شوم برای بانکم دستورات اس کیو ال را به کار بگیرم
اگر از دوستان یه نمونه کار ساده و کامل داره ممنون میشم برام لینک بزاره
یا در همین تاپیک آموزش دهد ممنون میشم
من می خواهم بانکم اکسس باشه و درون دلفی با دستورات اس کیو ال آنرا کنترل کنم
امیدوارم منظورم را فهمیده باشید
با تشکر
SYNDROME
دوشنبه 05 شهریور 1386, 15:06 عصر
با سلام
کلیه نکاتی را که شما می خواهید در سایت بحث شده.بنده نیز کمی اشاره می کنم.
1-یک aDOQuery و یک ADOConnectionبر روی صفحه قرار دهید.
2-aDOConectionرا با حالا Microsoft Jetتنظیم کنید.
سپس Connectionمربوط به ADOQueryرا به aDOConnectionوصل کنید.
4-سپس در SQL مربوط به ADOدستور را بنویسید و یا در هنگام اجرای برنامه آن را تنظیم کنید.
ADO.SQL.Text := 'Select * From Tbl_Test';
ADO.Active := True;
اگر باز هم مشکلی داشتید بپرسید.
موفق باشید
jamjid
دوشنبه 05 شهریور 1386, 17:40 عصر
اگر بخواهم اجرای دستورات را (مثلا دستور SELECT ) در DBGRIDE ببینم چه باید بکنم؟
Batman
دوشنبه 05 شهریور 1386, 17:40 عصر
با سلام
دوست عزیز ببین آموزش استفاده از دستورات sql رو که نمیشه توی یه پست همشو توضیح داد شما شروع کنید هر جا مشکل داشتید اول جستجو کنید اگر نبود سوال کنید تا بهتون جواب داده بشه
موفق باشید
Batman
دوشنبه 05 شهریور 1386, 17:44 عصر
اگر بخواهم اجرای دستورات را (مثلا دستور SELECT ) در DBGRIDE ببینم چه باید بکنم؟
با سلام
فکر کنم فاصله پست های ما چند ثانیه بیشتر نبود
در عین
حال یه دونه dbgrid بنداز روی فرم و خاصیت datasource رو به datasource1 وصل کن و توی خاصیت sql مربوط به ado کد زیر رو بنویس و سپس گزینه active رو true گم
select * from tabel_name
البته این روش توصیه نمیشه چون اگر تمام جداول باز باشه سرعت برنامه پایین میاد
موفق باشید
jamjid
سه شنبه 06 شهریور 1386, 10:19 صبح
شما چه روشی را پیشنهاد می کنید؟
Batman
سه شنبه 06 شهریور 1386, 12:20 عصر
شما چه روشی را پیشنهاد می کنید؟
با سلام
دوست عزیز اگر روی حرفت با منه باید بگم که با وجود سخت افزارهای قدرتمند امروزی سرعت زیاد ملاک نیست البته من در اکثر برنامه هام دیتابیس هایم رو active ش رو true میذارم
البته این نظر شخصی منه البته همونطوری که قبلا هم گفتم اگر تعداد جدولها و فیلدها خیلی زیاد باشه بهتره که در مواقع نیاز اونها رو فعال کنید
موفق باشید
SYNDROME
سه شنبه 06 شهریور 1386, 15:11 عصر
با سلام
شما در FormShowآن را True و در هنگام FormCloseآن را Falseکنید.
موفق باشید
jamjid
چهارشنبه 14 شهریور 1386, 14:56 عصر
من روشی که شما گفته بودید را انجام دادم و به نتیجه نرسیدم
اجزای فرمم به این شکل است
Ado connection
Ado table
Data source
Dbgride
Ado Query
Edit box
Button
بعد از تنظیمات ارتباط با بانک و اجزای فرم در button این کد را نوشتم
ADOQuery1.SQL.Text:='select * from Table1 Where Name ='+ QuotedStr(Edit1.Text);
ADOQuery1.Active:=True;
برنامه هیچ خطایی نمی دهد ولی کاری هم که من می خواهم را هم انجام نمی دهد
من می خوام بعد از کلیک روی button ان اسم را یا کلمه ای که در Edit نوشته را در جدول جستجو کند
و نتیجه جستجو را در دی بی گرید نمایش دهد
حالا اگر شما راه حل بهتری دارید ممنون میشم من را راهنمایی کنید
hossein taghi zadeh
چهارشنبه 14 شهریور 1386, 15:23 عصر
با سلام
کدت رو به ای شکل تغیر بده
ADOQuery1.SQL.Text:='select * from Table1 Where Name Like '+ QuotedStr('%'+Edit1.Text+'%');
ADOQuery1.Active:=True;
jamjid
چهارشنبه 14 شهریور 1386, 19:53 عصر
ممنون اقای تقی زاده ولی
باز هم نشد نمی دانم چرا؟ من همه چیز را چک کردم ولی هیچ کجا مشکلی نیست.
البته اینو بگم که ado connection و adotable و data source در فرم اول هستند و DBgrid در فرم بعدی است ولی همه اجزا به درستی به هم متصل شده اند
SYNDROME
پنج شنبه 15 شهریور 1386, 11:59 صبح
با سلام
طریقه ارتباط ها را به صورت دقیق بنویس.
موفق باشید
jamjid
پنج شنبه 15 شهریور 1386, 15:20 عصر
در فرم اول یک
ado connection و adotable و datasource و یک DBGrid گذاشتم و ارتباط های آنها را بطور کامل برقرار کردم بطوریکه رکورد های جدول در dbgrid نمایش داده میشه .
یعنی خاصیت connection string را در adoconnection با استفاده از Microsoft.Jet OLE DB 4.0 تنظیم کردم . خاصیت connection را در adotable به adoconnection گذاشتم و در قسمت table Name اسم جدولم را انتخاب کردم .
dataset را در datasource را به adotable ربط دادم و خاصیت DBGrid ،datasource را به datasource ربط دادم
در فرم 4 که فرم جستجوم هستش هم یه dbgrid گذاشتم و آنرا هم به Datasource فرم اول ارتباط دادم و رکورد های جدول را هم دراین dbgride قابل مشاهده است در TForm4.FormCreate این کد را نوشتم DBGrid1.DataSource:=Form1.DataSource1;
در فرم 4 یه ado query گذاشتم که خاصیت کانکشن آنرا به adoconnection فرم یک ربط دادم و خاصیت datasource آنرا به datasource در فرم یک ربط دادم . خاصیت active را با کدنویسی در برنامه true کردم .همین
ADOQuery1.SQL.Text:='select * from Table1 Where Name Like '+ QuotedStr('%'+Edit1.Text+'%');
ADOQuery1.Active:=True;
البته در فرم جستجوی من چند edit وجود دارد که بر حسب هر یک از آنها می خواهم جستجو انجام شود و من می خوام پله پله تمام مسایل را یاد بگیرم
با تشکر از دوستان
SYNDROME
پنج شنبه 15 شهریور 1386, 20:07 عصر
با سلام
در فرم 4 یه ado query گذاشتم که خاصیت کانکشن آنرا به adoconnection فرم یک ربط دادم و خاصیت datasource آنرا به datasource در فرم یک ربط دادم . خاصیت active را با کدنویسی در برنامه true کردم .همین
خاصیت Connectionمربوط به aDO را به ADOConectionمربوط کن و سپس خاصیت DataSet مربوط به DataSource را برابر ADOقرار بده و سپس خاصیت DataSourceمربوط به DBGrid را برابر DataSourceقرار بده و سپس active مربوز به aDOQuery را True کن.
ببین درست می شود
موفق باشید
jamjid
شنبه 17 شهریور 1386, 00:09 صبح
خاصیت Connectionمربوط به aDO را به ADOConectionمربوط کن و سپس خاصیت DataSet مربوط به DataSource را برابر ADOقرار بده و سپس خاصیت DataSourceمربوط به DBGrid را برابر DataSourceقرار بده و سپس active مربوز به aDOQuery را True کن.
ببین درست می شود
من اینکار را کردم ولی نشد
من فقط دستورات sql را در محیط کد نویسی نوشتم و همانجا ADO Query Active را Trueکردم
چون وقتی در قسمت ADo Query ، Property ، این کار را می کنم پیغام خطای زیر را می دهد
Parameter object is improperly defined. Inconsistent or incomplete information was
provided.
SYNDROME
شنبه 17 شهریور 1386, 20:10 عصر
با سلام
شما در زمانی که ADO.Active := True را اجرا کردید مقدار ADO.SQL.Text را به دست آورید و آن را در QueryAnalyzerتست کنید ببیند جواب چی است؟
موفق باشید
jamjid
شنبه 17 شهریور 1386, 20:59 عصر
من منظورتون را متوجه نشدم
میشه ساده تر توضیح بدید که چه کار باید بکنم
قبلا از این کارها نکرده بودم
hossein taghi zadeh
شنبه 17 شهریور 1386, 21:30 عصر
با سلام
Parameter object is improperly defined. Inconsistent or incomplete information was
provided.
خطا و مشکل از ConnectionStringتان (مربوط به ADOQeryتان) میباشد.
در ضمن زمانی که Select میکنید، برای نمایش سطرها در DBGrid باید DataSource(مربوط به DBGrid)به ADOQueryی که در آن Select کرده اید متصل باشد.
jamjid
چهارشنبه 21 شهریور 1386, 02:04 صبح
سلام
آقا یکی در مورد این دستور برای من توضیح بده ممنون میشم
Case ComboBox1.ItemIndex OF
0 :
Begin
IF Trim(Edit_Name.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Name Like ''%'+Edit_Name.Text+'%''')
Else IF Trim(Edit_Family.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Family Like ''%'+Edit_Family.Text+'%''')
Else IF Trim(Edit_Email.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Email Like ''%'+Edit_Email.Text+'%''')
Else IF Trim(Edit_Tel.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Tel Like ''%'+Edit_Tel.Text+'%''');
End;
1 :
Begin
IF Trim(Edit_Name.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Name = '''+Edit_Name.Text+'''')
Else IF Trim(Edit_Family.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Family = '''+Edit_Family.Text+'''')
Else IF Trim(Edit_Email.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Email = '''+Edit_Email.Text+'''')
Else IF Trim(Edit_Tel.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Tel = '''+Edit_Tel.Text+'''');
End;
2 :
Begin
IF Trim(Edit_Name.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Name <> '''+Edit_Name.Text+'''')
Else IF Trim(Edit_Family.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Family <> '''+Edit_Family.Text+'''')
Else IF Trim(Edit_Email.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Email <> '''+Edit_Email.Text+'''')
Else IF Trim(Edit_Tel.Text) <> '' Then
ADOQuery1.SQL.Add(' Where Tel <> '''+Edit_Tel.Text+'''');
End;
کار دستور Trim چیست؟
چرا در قسمت ItemIndex(0( که برای دستور like هستش از علامت % استفاده شده ولی در قسمت های دیگر استفاده نشده است ؟
hossein taghi zadeh
چهارشنبه 21 شهریور 1386, 08:58 صبح
با سلام
کار دستور Trim چیست؟
دستور Trim فواصل خالی و کاراکترهای نامعتبر را از ابتدا و انتهای یک رشته حذف میکند.
چرا در قسمت ItemIndex=0 که برای دستور like هستش از علامت % استفاده شده ولی در قسمت های دیگر استفاده نشده است ؟
این دستورات سه نوع جستجو رو انجام میده که:
1. پیدا کردن سطرهایی که، مقدار داده شده، قسمتی از مقدار ستونی از آنهاست.
2. پیدا کردن سطرهایی که، مقدار داده شده، دقیقا" همان مقدار ستونی از آنهاست.
3. پیدا کردن سطرهایی که، مقدار داده شده، دقیقا" همان مقدار ستونی از آنها نیست.
manvaputra
چهارشنبه 21 شهریور 1386, 12:04 عصر
سلام دوست عزیز به نظرم اگه یه نمونه از برنامتو ضمیمه کنی راحتتر میشه بررسی کرد البته اگه امکانش هست
SYNDROME
چهارشنبه 21 شهریور 1386, 14:08 عصر
با سلام
دستور Case تشخیص می دهد کدام از Itemهای Comboboxانتخاب شده است.
سپس در هر کدام از Begin End ها هر کدام از Editها پر باشد بر اساس آن جستجو را انجام می دهد.
دستور Trimرا هم برای برداشتن Space اضافه قرار داده شده است.
دقت کنید دستورات فوق فقط بر اساس یک فیلد جستجو می کند.
علامت "Like" "=" "<>" هم با توجه به Case و Comboboxمورد نظر قرار داده شده است.
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.