• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

پایگاه داده‌ها در وی‌بی‌دات‌نت

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
DataBase Vb.net
درود
نمی‌دانم پیش ازین هم جستاری پیرامون پایگاه‌داده‌ها در vb.net پدید آمده است و یا نه ...
به‌هر روی می‌تواند این جستار، پایگاهی در این باره باشد.

نخستین پرسش را خود من از دوستان می‌پرسم.
دشواری‌ای برای‌م پیش آمده است.
هنگامی که پایگاه‌داده‌ای را خواه SQL و خواه Access به یاری ِ OLeDBDataAdapter فراخوانی می‌کنم، بخش ِ Update و Delete به کار نمی‌افتد!
یعنی سه مورد نخست تیک می‌خورد، ولی موارد چهارم و پنجم، ضرب‌در می‌خورد.
یعنی این پیغام‌ها:

Generated Update Statement
Could not determine which columns uniquely identify the rows for "Table1".
Generated Delete Statement
Could not determine which columns uniquely identify the rows for "Table1".

خواهش‌مندم راهنمایی فرمایید.
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستيد
ميشه لطف كنيد و كد تون رو بگذاريد( از اول )
فكر كنم نوع ريكورد ستون رو درست تعريف نميكنيد

اميدوارم كمك كنه
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
به نقل از saeedsmk :
سلام
خوب هستيد
ميشه لطف كنيد و كد تون رو بگذاريد( از اول )
فكر كنم نوع ريكورد ستون رو درست تعريف نميكنيد

اميدوارم كمك كنه
درود بر شما
سپاس‌گزارم ...
دشواری آن‌جا بود که من واژه‌ی کلیدی در SQL تعریف نکرده بودم!
ازین‌روی، امکان زدودن و به‌روزکردن از من گرفته شده بود.
با راهنمایی ِ شما، روی‌آور ِ این موضوع شدم.
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستيد
خوشحالم مشكلتون حل شد

به اميد ديدار
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
درود
من می‌خواهم به‌کمک ِ DataView فیلدهای ِ ویژه‌ای را فیلتر کنم.

کد:
Dim s as integer
s = 123
DataRow1.RowFilter (FileNo = S)

با کد بالا پیغام خطا می‌دهد که چیزی به‌نام ِ S نمی‌یابد. موضوع این‌جاست که من دنبال ِ s نیستم. دنبال ِ عددی هستم که در s هست ولی دستور، متغیر نمی‌پذیرد!
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
از مدیر تارنما خواهشمندم روی‌آور این پرسش من هم بشوند.
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستید
شما وقتی از رو فیلتر استفاده میکنید تا اونجایی که من میدونم از دستوراتی شبیه sql میتونید استفاده کرد .
یعنی مثلا
کد:
DataRow1.RowFilterFileNo = "FileNo=" & S

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

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
درود
سپاس‌گزارم
به نتیجه رسیدم.

فقط یه پرسش ِ دیگه،
آیا می‌تونیم، فیلتر را در دو فیلد انجام دهیم؟

یعنی هم FileNo و هم ID؟

نه این‌جوری جواب می‌ده:
کد:
DataView1.RowFilter = ("FileNo=" & s)
        DataView1.RowFilter = ("Id=" & h)

نه این‌جوری:

کد:
DataView1.RowFilter = ("FileNo=" & s) And ("ID=" & h)
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
به نقل از hamed-Q :
درود
سپاس‌گزارم
به نتیجه رسیدم.

فقط یه پرسش ِ دیگه،
آیا می‌تونیم، فیلتر را در دو فیلد انجام دهیم؟

یعنی هم FileNo و هم ID؟

نه این‌جوری جواب می‌ده:
کد:
DataView1.RowFilter = ("FileNo=" & s)
        DataView1.RowFilter = ("Id=" & h)

نه این‌جوری:

کد:
DataView1.RowFilter = ("FileNo=" & s) And ("ID=" & h)
اینجوری:
کد:
DataView1.RowFilter = "FileNo=" & s & " And ID=" & h
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستید
همانطور که استاد گرامی گفتند parham.G گفتند شما باید بصورت پیوسته گزینه های مربوط را اعمال نمایید

همانطور که گفتم بصورت دستوارتی که برای sql کامند استفاده میشود البته شبیه ان

به امید دیدار
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
درود
سپاس‌گزارم دوستانِ گرامی.

یک پُرسش ِ دیگر،
فرض کنید، یک TextBox داریم و یک Datagrid ، چه کنیم که هر چه در textBox می‌نویسیم، واکنشی در DataGrid داشته باشد.
یعنی اگر در TextBox بنویسیم: "آ" به روی ِ نخستین رکوردی که با حرف ِ "آ" آغاز می‌شود برود، سپس با افزودن ِ "د" به "آ" به روی ِ نخستین رکوردی که با "آد" آغاز می‌شود برود، ... تا این‌که با تایپ ِ کامل ِ "آداب" سطر ِ "آداب" نمایان شود.

« زبان ِ برنامه‌نویسی VB.net است و پایگاه ِ داده‌های ِ ما، این‌بار SQL 2000 نیست که Access است. »
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
به نقل از hamed-Q :
درود
سپاس‌گزارم دوستانِ گرامی.

یک پُرسش ِ دیگر،
فرض کنید، یک TextBox داریم و یک Datagrid ، چه کنیم که هر چه در textBox می‌نویسیم، واکنشی در DataGrid داشته باشد.
یعنی اگر در TextBox بنویسیم: "آ" به روی ِ نخستین رکوردی که با حرف ِ "آ" آغاز می‌شود برود، سپس با افزودن ِ "د" به "آ" به روی ِ نخستین رکوردی که با "آد" آغاز می‌شود برود، ... تا این‌که با تایپ ِ کامل ِ "آداب" سطر ِ "آداب" نمایان شود.

« زبان ِ برنامه‌نویسی VB.net است و پایگاه ِ داده‌های ِ ما، این‌بار SQL 2000 نیست که Access است. »
میتونید در داخل ایونت Text_Changed یه کوئری LIKE درست کنید و رکوردهای برگشتی رو نشون بدید مثل:
کد:
SELECT * FROM myTable WHERE word LIKE '*آب'
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
درود
می‌شه بیش‌تر توضیح دهید.
و این‌که شما یک رشته را مثال زدید، ولی من با متغیر رشته‌ای سروکار دارم.
مثلاً می‌توانم به‌جای 'آب*' بنویسم: 's*'
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
به نقل از hamed-Q :
درود
می‌شه بیش‌تر توضیح دهید.
و این‌که شما یک رشته را مثال زدید، ولی من با متغیر رشته‌ای سروکار دارم.
مثلاً می‌توانم به‌جای 'آب*' بنویسم: 's*'
شما باید متغیر رو خارج کوئری قرار بدید.
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
به نقل از balabala :
شما باید متغیر رو خارج کوئری قرار بدید.
خب یه چیز ِ دیگه
با این‌ دستوری که شما نوشتید، فقط همون سطر نشون داده می‌شه!
و این خواسته‌‌ی ِ من نیست!

من می‌خوام، سطری که فیلد ِ مورد نظر ِ من توش قرار داره، در حالت انتخاب قرار بگیره.
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
خب یه چیز ِ دیگه
با این‌ دستوری که شما نوشتید، فقط همون سطر نشون داده می‌شه!
و این خواسته‌‌ی ِ من نیست!

من می‌خوام، سطری که فیلد ِ مورد نظر ِ من توش قرار داره، در حالت انتخاب قرار بگیره.
شما یه حلقه درست کنید، همه رکوردهای توی گرید رو با دستوری مثل این سرچ کنید اگر به کلمه میخورد، انتخابش کنید:
کد:
For
If Text1.Text Like selected_grid_recode Then
اینجا انتخابش کنید.
End If
Next
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
با درود، در یک SqlDataAdapter این کد را وارد کردم:

کد:
WHERE  Bimar.name LIKE @Param

سپس در Form-Load این کد را افزودم:

کد:
BimarAdapter.SelectCommand.Parameters("@Param").Value = shp

در برنامه‌ام یک DataGrid دارم که در آن فقط رکوردی به نمایش در می‌آید که فیلد ِ name آن برابر با shp باشد.
ولی من می‌خواهم کد دوم و یا نخست! به‌گونه‌ای ویرایش شود که اگر برای ِ نمونه shp برابر با حم بود، همه‌‌‌ی رکوردهایی که در nameی آن‌ها، حم وجود دارد به نمایش در آید نه فقط آن‌هایی که برابر با حم باشند.

یعنی برای ِ نمونه، حمیدی، محمدی، محمودی و ...
ولی با کد بالا فقط رکوردی که shp آن "حم" باشد دیده می‌شود!
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
و چه بهتر که چنین کاری را با DataView هم توضیح دهید.
یعنی چگونه فیلتر شود که با اگر shp=حم باشد، همه‌ی ِ رکوردهایی که در فیلد name آن‌ها حم به کار رفته باشد، به‌نمایش در آید.
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستيد
ببخشيد يك اديت كوچلو توي نوشته هاتون انجام دادم شرمنده
ببنيد اين كمك ميكنه :

کد:
sql="select * from Bimar  where Bimar.name like '%shp%'"
BimarAdapter.SelectCommand= new ew  SqlCommand(sql,yourdbconnection)

راستي كد دومتون دستور اول رو كه دستور لايك به هم ميزيره
اون رو بر داريد
 

hamed-Q

کاربر تازه وارد
تاریخ عضویت
30 جولای 2006
نوشته‌ها
25
لایک‌ها
0
آیا کدهای بالا در پنجره‌ی کد وارد می‌شوند؟
درباره‌ی ِ خط دوم، قسمت New selectcommand خطا می‌گیرد!
یعنی SelectCommand را پیدا نمی‌کند.
 
بالا