PDA

View Full Version : مبتدی: دستور SQL



aftabeshargh
چهارشنبه 23 فروردین 1391, 17:49 عصر
سلام

با دستور زیر فقط یه ردیف رو بررسی میکنیم :

cmd.CommandText = ("select*from tbl_s where id =" + dgv.CurrentRow.Cells(0).Value.ToString)


حالا وقتی بخوایم مثلا 10 ردیف رو بررسی کنیم در جدول (مثلا لیست افراد) باید چطور بنویسیم؟

armitakarimi
چهارشنبه 23 فروردین 1391, 18:07 عصر
باید آخر این دستور از 10 top استفاده کنی ، همین .

aftabeshargh
چهارشنبه 23 فروردین 1391, 18:14 عصر
سلام
یعنی چی ؟ میشه خود دستور رو بنویسید ؟

فرید نجفلو
چهارشنبه 23 فروردین 1391, 20:06 عصر
دوست عزیز با فرض اینکه شما لیست در دست دارید می شه:

cmd.CommandText = ("select * from tbl_s where id IN (" & ID1 & "," & ID2 & "," & ID3 & ")"

البته با یه حلقه می تونید راحتر بنویسید

aftabeshargh
چهارشنبه 23 فروردین 1391, 20:11 عصر
سلام
تعداد ردیف های انتخابی برای من نامشخصه " میخوام هرتعداد که کاربر انتخاب کرد بره تو شرط " مثلا خاصیت جدولم حالت multiselect داشته باشه

فرید نجفلو
چهارشنبه 23 فروردین 1391, 21:00 عصر
سلام
تعداد ردیف های انتخابی برای من نامشخصه " میخوام هرتعداد که کاربر انتخاب کرد بره تو شرط " مثلا خاصیت جدولم حالت multiselect داشته باشه

شما باید با یک حلقه ID ها رو از گرید استخراج و و تو همون حلقه در دستور قرار بدید

aftabeshargh
پنج شنبه 24 فروردین 1391, 09:19 صبح
شرط پایان حلقه رو چی باید نوشت ؟

lastmory
پنج شنبه 24 فروردین 1391, 10:03 صبح
سلام اول تو حلقه آی دی ها رو در بیار
بریزشون تو یه رشته
اینجوری
For i As integer = 0 to dgv.rowCount -1
str &= dgv.Row(i).Cells(0).Value.ToString & ","
next
بعدش
آخرین ویرگول رو باید برداری که ارور نده یا اینکه اینجوری دورش بزنی
str &= "0"
سلکتت هم اینجوری میشه
cmd.CommandText = ("select * from tbl_s where id IN (" & Str & ")"

فرید نجفلو
پنج شنبه 24 فروردین 1391, 11:15 صبح
If Me.DataGridView1.SelectedRows.Count = 0 Then Exit Sub 'سطر انتخاب شده ای وجود ندارد
Dim TSQL As String = "SELECT * FROM Table1 WHERE id IN ("
For Each aRow As DataGridViewRow In Me.DataGridView1.SelectedRows
'در سطر اول نباید ویلگول اضافه کرد
If aRow.Index <> 0 Then
TSQL &= ","
End If
'افزودن آی دی
TSQL &= aRow.Cells("id").Value.ToString
Next
TSQL &= ")"
cmd.CommandText = TSQL

aftabeshargh
پنج شنبه 24 فروردین 1391, 14:42 عصر
سلام

آخر دستور زیر رو به selected rows تغییر بدیم میشه اونی که منظورم بود "



For Each aRow As DataGridViewRow In Me.DataGridView1.Rows

با توجه به :

If aRow.Index <> 0 Then TSQL &= ","
End If


وقتی مثلا 3 ردیف 21و22و23 رو انتخاب میکنم " خطا میگیره " چون به این صورت نشون میده 21,22,23 ,

" , " اولی رو چطور باید بردارم ؟

aftabeshargh
پنج شنبه 24 فروردین 1391, 15:05 عصر
چطور باید ویلگول رو از سطر اول برداشت؟

فرید نجفلو
پنج شنبه 24 فروردین 1391, 18:34 عصر
دوست عزیز اگه خودتون هم یکم فکر می کردین می تونستید اصلاح کنید
در مورد اشتباه بنده هم ، باید بگم چون بعضی مواقع کد ها رو بدون تست می فرستم پیش می یاد

اینم کد صحیح:

For i = 0 To 13
Me.DataGridView1.Rows.Add(i.ToString)
Next
If Me.DataGridView1.SelectedRows.Count = 0 Then Exit Sub 'سطر انتخاب شده ای وجود ندارد
Dim TSQL As String = "SELECT * FROM Table1 WHERE id IN ("
For i As Integer = 0 To Me.DataGridView1.SelectedRows.Count - 1
'در سطر اول نباید ویلگول اضافه کرد
If i <> 0 Then
TSQL &= ","
End If
'افزودن آی دی
TSQL &= Me.DataGridView1.SelectedRows(i).Cells("id").Value.ToString
Next
TSQL &= ")"
cmd.CommandText = TSQL

aftabeshargh
پنج شنبه 24 فروردین 1391, 20:53 عصر
سلام
وقتی با این دستورات دو تا جدول دیتاست رو پر میکنم " یه جدول مربوط به عکس و یه جدول مربوط به اسامی " چرا برای اسامی ای که عکس ندارند (ردیف هایی که عکس ندارن ) عکس های سایر ردیف ها میاد و تکرار میشه ؟

aftabeshargh
پنج شنبه 24 فروردین 1391, 21:48 عصر
سلام
دوتا جدول در دیتاست دارم (لیست افراد و عکس ) وقتی با دستور پست قبلی جناب Farid " این دوتا جدول رو جدا جدا fill میکنم " وقتی تک تک ردیف ها رو انتخاب میکنم مشکلی نیست " اما وقتی ردیفی که عکس داره و ردیفی که عکس نداره رو با هم انتخاب میکنم مشکل ایجاد میشه و اون عکس برای همه ردیفها تو کریستال میاد !

swallow.pa
جمعه 25 فروردین 1391, 10:02 صبح
بهتره از ارایه استفاده کنی

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

Dim StrQuery As String = "SELECT au_lname, state FROM authors WHERE state IN ( " ''CA', 'IN', 'MD')"

Dim bytCount As Byte = lstArray.Items.Count - 1



For I As Integer = 0 To bytCount

StrQuery &= " '" & lstArray.Items(I) & "',"

Next



StrQuery = StrQuery.Substring(0, StrQuery.Length - 1) + ")"



MsgBox(StrQuery)

End Sub

aftabeshargh
جمعه 25 فروردین 1391, 10:10 صبح
سلام
ممنون از توجه شما
راستش مشکلم با دیتاست هستش که مجبور شدم تایپیک جدید بزنم
مشکل با دیتاست (http://barnamenevis.org/showthread.php?336324-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%AF%DB%8C%D8%AA%D8%A7%D8%B3%D8%AA)