PDA

View Full Version : سوال: نمایش یک ردیف از جدول اکسس در دیتا گرید ویو



Alireza.imani
چهارشنبه 19 مهر 1391, 18:12 عصر
سلام...من اطلاعات را توسط برنامه ام به فایل اکسس ارسال می کنم.حال می خواهم بخش جستجو در برنامه ام ایجاد کنم.به طوری که با سرچ کردن واژه ای که در فایل اکسس موجود است کلّ آن ردیفی که کلمه ی سرچ شده در آن وجود دارد در دیتا گرید ویو نماش داده شود...برای این کار مرا راهنمایی کنید.........:لبخندساده:


هر چه سریع تر بهتـــــــــــــــــر

veniz2008
چهارشنبه 19 مهر 1391, 18:37 عصر
سلام کد زیر هر کلمه ای رو که دقیقا مثل کلمه وارد شده باشه یا شبیه به اون باشه رو پیدا میکنه (بهجای firstname نام فیلدتون رو بذارید).

select * from persons where firstname like @firstname
اگر هم فقط میخواید همون کلمه رو جستجو کنید(نه اونهایی که شبیهش هستن) از کد زیر استفاده کن :

select * from persons where firstname = @firstname

Alireza.imani
چهارشنبه 19 مهر 1391, 18:45 عصر
کامل تر توضیح بدین من آماتورم

abcd_a
چهارشنبه 19 مهر 1391, 18:46 عصر
سلام
این کد را درون یک رویداد کلیک یک دکمه بنویس



SqlConnection cn = new SqlConnection(path);
SqlDataAdapter da = new SqlDataAdapter("select * from mytb1 where name = N'" +txtSearch.Text + "'", cn);
DataTable dt = new DataTable();
da.Fill(dt);
elDataGridView1.DataSource = dt;

این کد sql تبدیلش کن به access

Alireza.imani
پنج شنبه 20 مهر 1391, 13:57 عصر
سلام
این کد را درون یک رویداد کلیک یک دکمه بنویس

1
2
3
4
5
6
7
SqlConnection cn = new SqlConnection(path);
SqlDataAdapter da = new SqlDataAdapter("select * from mytb1 where name = N'" +txtSearch.Text + "'", cn);
DataTable dt = new DataTable();
da.Fill(dt);
elDataGridView1.DataSource = dt;




این کد sql تبدیلش کن به access



;این ارور رو می ده:

The connection string property is not initialized

barnamenevisforme
پنج شنبه 20 مهر 1391, 14:30 عصر
سلام
اگر فایل access در محلی که برنامه شما قرار داره باشه اونوقت:
oledbConnection cn = new oledbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbname.MDB");
oledbDataAdapter da = new oledbDataAdapter("select * from mytb1 where name = N'" + txtSearch.Text + "'", cn);
DataTable dt = new DataTable();
da.Fill(dt);
elDataGridView1.DataSource = dt;
که به جای dbname باید نام فایل رو ذکر کنید.
البته بهتون توصیه میکنم که قبل از ایجاد تاپیک حتما جستجو کنید.و مطالب آموزشی رو بررسی بفرمایید.
موفق باشید.

Alireza.imani
پنج شنبه 20 مهر 1391, 16:28 عصر
Syntax error in query expression 'name=N"


باز هم این اخطار رو میده

ehsan7007
پنج شنبه 20 مهر 1391, 16:59 عصر
بیا دوست من ، برات نوشتمش ، خودمم تست کردم درست بود :



موفق و سربلند باشی.

Alireza.imani
پنج شنبه 20 مهر 1391, 19:56 عصر
نرم افزار من 2008 است....فایل Form1.cs[Design]رو نمایش نمی ده:گریه::گریه::افسرده::عصبان ++:

ehsan7007
پنج شنبه 20 مهر 1391, 20:13 عصر
خب عیب نداره ، کدش رو برات میزارم(کد barnamenevisforme عزیز که خودمم تست کردم) :
OleDbConnection c = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\\Database51.accdb");
OleDbDataAdapter da = new OleDbDataAdapter("select * from Table1 where name = '" +textBox1.Text + "'", c);
DataTable dt = new DataTable();
da.Fill(dt);

table1DataGridView.DataSource = dt;

نام و مسیر دیتابیس و تیبل و تکست باکس و فیلد رو هم با مال برنامه ی خودتون عوض کنید.


موفق باشید.

veniz2008
پنج شنبه 20 مهر 1391, 20:30 عصر
textBox1.Text = jkjk' or '1' = '1
به همین سادگی جدول شما هک میشه.
از پارامترها استفاده کنید تا مشکلی براتون پیش نیاد.

ehsan7007
پنج شنبه 20 مهر 1391, 21:29 عصر
textBox1.Text = jkjk' or '1' = '1
به همین سادگی جدول شما هک میشه.
از پارامترها استفاده کنید تا مشکلی براتون پیش نیاد.

منظورتون چیه محمد جان؟! به چه دلیلی ؟

یعنی بخاطر ' ؟

veniz2008
پنج شنبه 20 مهر 1391, 21:42 عصر
منظورتون چیه محمد جان؟! به چه دلیلی ؟

یعنی بخاطر ' ؟
نه دوست من. بخاطر نحوه نوشتن دستور select این اتفاق می افته. این همون چیزیه که دوستان زیادی قبلا هشدارش رو دادن که sql injection اتفاق می افته. اگر دستور sql رو به صورت زیر به کار ببریم کافیه کاربر درون تکست باکس اون مقداری رو که گذاشتم وارد کنه تا کل جدول شما هک بشه و اطلاعاتش لو بره.
دستور اشتباه :
"select * from Table1 where name = '" +textBox1.Text + "'"
دستور صحیح :
"select * from Table1 where name = @name"
برای اینکه در عمل ببینید چه اتفاقی می افته یه جدول بسازید و درون تکست باکس مقدار jkjk' or '1' = '1 رو وارد کنید.
البته jkjk یه متن بی ربط هست و هیچ ارتباطی با فیلد name نداره.

ehsan7007
پنج شنبه 20 مهر 1391, 21:56 عصر
ممنون ؛ حق باشماست .
همونطور که تو دو پست قبل هم گفتم ، این شیوه کدنویسی من نیست ، حالا چه خوب چه بد من همیشه از پارامتر استفاده می کنم ؛ در هر صورت بخاطر تذکرتون تشکر.


با ارزوی موفقیت برای شما دوست عزیز.

Alireza.imani
جمعه 21 مهر 1391, 09:43 صبح
باز هم این پیغام رو نمایش می ده :


No value given for one or more parameters.

Alireza.imani
جمعه 21 مهر 1391, 10:19 صبح
برای اینکه اطلاعات یک Radio button را به اکسس بفرستیم ، باید چی کار کنیم؟

مسعود اقدسی فام
جمعه 21 مهر 1391, 11:03 صبح
برای اینکه اطلاعات یک Radio button را به اکسس بفرستیم ، باید چی کار کنیم؟

اگه فقط دو تا radioButton برای انتخاب هست، True/False ازسال کنید. اما اگه چند تاست. برای هر کدوم یه شماره در نظر بگیرید و هر کدوم انتخاب شده عددش رو ذخیره کنید. یا مثلا متن RadioButton رو ذخیره کنید که نمایشش هم راحت بشه. هر کدوم یه محاسن و یه معایبی دارن.