PDA

View Full Version : سوال: مشکل با دیتاست



aftabeshargh
پنج شنبه 24 فروردین 1391, 22:05 عصر
سلام
دوتا جدول در دیتاست دارم (لیست افراد و عکس ) " و با شرط مساوی بودن id ردیف های جدول در فرم این دوتا جدول رو جدا جدا (از دیتابیس) fill میکنم " وقتی تک تک ردیف ها رو انتخاب میکنم مشکلی نیست " اما وقتی ردیفی که عکس داره و ردیفی که عکس نداره رو با هم انتخاب میکنم مشکل ایجاد میشه و اون عکس برای همه ردیفها تو کریستال میاد !

aftabeshargh
پنج شنبه 24 فروردین 1391, 22:16 عصر
دستوراتی که استفاده کردم :



If Me.dgv.SelectedRows.Count = 0 Then Exit Sub
Dim TSQL As String = "SELECT * from tbl_s WHERE id IN ("
For i As Integer = 0 To Me.dgv.SelectedRows.Count - 1
If i <> 0 Then
TSQL &= ","
End If

TSQL &= Me.dgv.SelectedRows(i).Cells(0).Value.ToString
Next
TSQL &= ")"
cmd.CommandText = TSQL

If Me.dgv.SelectedRows.Count = 0 Then Exit Sub
Dim TSQL2 As String = "Select * from tbl_p WHERE idoz IN ("
For i As Integer = 0 To Me.dgv.SelectedRows.Count - 1
If i <> 0 Then
TSQL2 &= ","
End If

TSQL2 &= Me.dgv.SelectedRows(i).Cells(0).Value.ToString
Next
TSQL2 &= ")"
cmdp.CommandText = TSQL2

adpp.SelectCommand = cmd
' adparm.SelectCommand = cmdar
adpax.SelectCommand = cmdp

adpp.Fill(ds, "dtlist")
adpax.Fill(ds, "dtpic")


وقتی چندتا ردیف رو انتخاب میکنم که فقط یکی از این چند ردیف عکس داره " این عکس برا همه تکرار میشه !

aftabeshargh
پنج شنبه 24 فروردین 1391, 23:33 عصر
دوستان نظری ندارن ؟

aftabeshargh
جمعه 25 فروردین 1391, 09:44 صبح
:گریه: :متفکر::چشمک::چشمک::متفکر:

Mani_rf
جمعه 25 فروردین 1391, 10:44 صبح
از کدات خیلی سر در نیاوردم . میشه بیشتر توصیح بدی؟ میخای 1 دیتا گرید رو پر کنی؟
یا اینکه داری یک دیتاست درست میکنی و میفرستی به کریستال؟
رابطه جدول لیست افراد و عکس چند به چند است؟
چرا از Join استفاده نکردی؟

aftabeshargh
جمعه 25 فروردین 1391, 11:03 صبح
سلام
یه جدول(dvg) دارم توی فرمم که هنگام لود " لیست افراد رو از جدول tbl_s نمایش میده " حالا میخوام این لیست رو بفرستم تو کریستال به واسطه یک دیتاست . و جدول dvg خاصیت multiselect داره و هر تعداد ردیف رو که انتخاب میکنم " فقط این ردیفها رو به واسطه id شون یعنی (0) cell میفرستم تو دیتاست .

دستور زیر ردیف های انتخابی از جدول dvg رو (یعنی id هارو) میگیره :


If Me.dgv.SelectedRows.Count = 0 Then Exit Sub
Dim TSQL As String = "SELECT * from tbl_s WHERE id IN ("
For i As Integer = 0 To Me.dgv.SelectedRows.Count - 1
If i <> 0 Then
TSQL &= ","
End If

TSQL &= Me.dgv.SelectedRows(i).Cells(0).Value.ToString
Next
TSQL &= ")"
cmd.CommandText = TSQL


و توسط دو خط زیر میفرستم تو دیتاست ds

adpp.SelectCommand = cmd
adpp.Fill(ds, "dtlist")



تا اینجا هیچ مشکلی نیست " و به همین صورت اگه به پست قبلیم توجه کنید دستورات رو برای جدول دوم از دیتاست نوشتم "
و اینکه : در دیتابیس دو جدول مجزا دارم یکی لیست افراد tbl_s و دیگری که هر فردی که عکس داشته باشه " id و عکسش در جدول tbl_p نگهداری میشه
اما نمیدونم چرا تو دستورات بالا موقع پر کردن دیتاست " ردیف هایی که عکس ندارن " با عکس ردیفهای دیگه عکسدار میشن !! یه عکس برا همه تکرار میشه

فرید نجفلو
جمعه 25 فروردین 1391, 11:41 صبح
دوست عزیز اگه بتونی گزارشت رو طوری تغییر بدی که همه اطلاعات رو با یک دیت تیبل بگیره یه راه حل خیلی سر راست بهت می گم
کار زیادی هم نیست و فقط تو دیتا ست فیلد Pic رو داخل dtlist ایجاد کن و از همون استفاده بکن
اگع عوض کردی بگو راهنمایی کنم
البته در اصل باید از اول هم همین کار رو می کردی

aftabeshargh
جمعه 25 فروردین 1391, 11:50 صبح
قربون شما
راستش یه بار اینکارو کردم نشد !
خب چشم " من ستون جدول pic رو بردم تو dtlist
منتظر راه حل شما هستم

aftabeshargh
جمعه 25 فروردین 1391, 15:58 عصر
دوستان کسی نظری نداره؟

aftabeshargh
جمعه 25 فروردین 1391, 19:34 عصر
پست 2 رو اگه جدول های دیتاست رو یکی کنیم و PIC رو ببریم در dtlist " اونوقت دستور sql در پست 2 به چه صورت میشه ؟

فرید نجفلو
جمعه 25 فروردین 1391, 23:52 عصر
این رو تست کن:

If Me.dgv.SelectedRows.Count = 0 Then Exit Sub
Dim TSQL As String = "SELECT *,(SELECT TOP 1 Pic FROM tbl_p WHERE idoz = tbl_s.id) AS Pic from tbl_s WHERE id IN ("
For i As Integer = 0 To Me.dgv.SelectedRows.Count - 1
If i <> 0 Then
TSQL &= ","
End If
TSQL &= Me.dgv.SelectedRows(i).Cells(0).Value.ToString
Next
TSQL &= ")"
cmd.CommandText = TSQL
adpp.SelectCommand = cmd
adpp.Fill(ds, "dtlist")