ورود

View Full Version : نمایش اطلاعات



abi_sarab
یک شنبه 19 آبان 1387, 18:51 عصر
سلام؟
یه سوال بدجوری درگیرم کرده.
من یه دیتابیس دارم که دو تا جدول داره title , text که یکی عنوان رو نگه می داره دیگری متن رو که به وسیله کلید titleid با هم رابطه دارن. یعنی titleid توی text فارن کی شده.
من تو گرید فقط title رو نشون می دم. می خوام وقتی روی فیلد عنوان کلیک می کنم متنش از تو جدول دوم خونده بشه.
مرسی
فایلش هم ضمیمه کردم.
مرسی

ALI TT
یک شنبه 19 آبان 1387, 19:32 عصر
چون فیلد ID جدول text شما رو نمی دونستم کدشو دادم ... اونو بگید تا بزارم توی پروژه . وگرنه خودتون میتونید کد زیر را با جایگزین کردن متنی که نوشتم با فیلد ID از جدول text مشکلتون رو حل کنید .


Private Sub dgv1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv1.CellDoubleClick

Dim DataSet1 As DataSet = New DataSet

txtsearch.Text = "SELECT * from text WHERE 'فیلد آی دی از جدول تکست' = " & dgv1.CurrentRow.Cells(0).Value

da.Fill(DataSet1)

txtsearch.Text = DataSet1.Tables(0).Rows(0)(1).ToString

End Sub

sepehr.net
یک شنبه 19 آبان 1387, 19:37 عصر
سلام شما باید یک Query بسازی
اگه از sql استفاده میکنین یک قسمتی به نام view داره که توی ا.ن میتونین این کار رو انجام بدین اگه هم از access استفاده میکنین یک قسمتی به نام Queries داره که در اونجا این عمل صورت میگیره
اگه میخواهین این کار را در کد انجام بدین همون کار رو انجام بدین و متنی که میسازه رو در برنامه کپی کنین

abi_sarab
دوشنبه 20 آبان 1387, 07:51 صبح
علی آقا مرسی.
از جوابت ولی متأسفانه کار نکرد. eror ی که می ده این هست:
Object reference not set to an instance of an object
آقایون خانوما کس دیگه ای هست کمک کنه؟

abi_sarab
دوشنبه 20 آبان 1387, 10:03 صبح
علی آقا اسم فیلد اصلی جدول text و textid هست.

ALI TT
دوشنبه 20 آبان 1387, 12:49 عصر
علی آقا اسم فیلد اصلی جدول text و textid هست.

مثالی که زدم معلومه که اشتباه بود . من فقط می خواستم دستور Query رو نشونتون بدم . حالا به این چندتا سوال پاسخ بدید .
جدول title دو تا فیلد داره ----- titleid و war درسته ؟
جدول text چندتا فیلد داره ؟ یکیش که textid . دیگه نداره ؟
مطالبی برای تست در بانکتون وجود داره ؟ یعنی خالی یا نه ؟

abi_sarab
دوشنبه 20 آبان 1387, 16:22 عصر
علی آقا مرسی که جوابمو می دی.
بله جدول title دو تا فیلد داره یکی Titleid و دیگری war
جدول text هم سه تا فیلد داره، یکی textid و دیگری War و آخریش هم Titleid که به عنوان فارکن کی از جدول title هست.
مطالب پر هست. جدول text پر هست.

ALI TT
سه شنبه 21 آبان 1387, 07:36 صبح
ببین ، ابتدا فایل exe خودت رو از پوشه Debug نرم افزارت پاک کن و کدهای زیر رو در قسمت دبل کلیک دیتا گرید وارد کن :

cmd = New SQLite.SQLiteCommand("SELECT * from text WHERE textid = " & DGV1.CurrentRow.Cells(0).Value, con)

Dim rdr As SQLite.SQLiteDataReader = cmd.ExecuteReader
Dim dt As DataTable = New DataTable("text")

dt.Load(rdr)

txtsearch.Text = dt.Rows(0)(1).ToString

کدهام شاید یکم تکراری و بد باشه ... خودت می تونی با یکمی تغییرات درستشون کنی
موفق باشی

abi_sarab
سه شنبه 21 آبان 1387, 14:32 عصر
سلام علی آقا مرسی
چیزی که شما نوشتید کار نکرد.
من خودم این طور نوشتم:

Dim da As SQLiteDataAdapter
Dim strSQL As String
strSQL = "SELECT * FROM Text WHERE titleid= " & DGV1.Item(0, DGV1.CurrentRow.Index).Value
da = New SQLiteDataAdapter(strSQL, con)
Dim ds As New DataSet
da.Fill(ds, "Text")
TextBox1.Text = ds.Tables("text").Rows(0).Item("war")

ولی متإسفانه الان مجبورم اسم هر فیلد رو جلوی آیتم تو خط آخر بنویسم.
شما راهی به نظرتون نمی رسه که من این رو ننویسم چون من تنها این فیلد رو ندارم.
هشت تا فیلد دارم نمی شه جلوی آیتم اسم هر فیلد رو بنویسم.

مرسی

bah_jaf
سه شنبه 21 آبان 1387, 16:11 عصر
من یه برنامه نمونه برات نوشتم اگه نگاه کنی متوجه میشی
اگر هم موردی بود در خدمتم

abi_sarab
سه شنبه 21 آبان 1387, 18:19 عصر
سلام bah_jafمرسیولی من مبتدی ام.شما خیلی بالا بالا می پرید.اگه یه توضیح آسون تر باشه خیلی بهتره.

ALI TT
چهارشنبه 22 آبان 1387, 09:11 صبح
سلام علی آقا مرسی
چیزی که شما نوشتید کار نکرد.

البته من دیتا گریدتو پاک کردم و یگی دیگه ساختم . بگزریم ، مهم دستور Query بود .


ولی متإسفانه الان مجبورم اسم هر فیلد رو جلوی آیتم تو خط آخر بنویسم.
شما راهی به نظرتون نمی رسه که من این رو ننویسم چون من تنها این فیلد رو ندارم.
هشت تا فیلد دارم نمی شه جلوی آیتم اسم هر فیلد رو بنویسم.

چاره ای نیست . البته می تونی بجای استفاده از نامهای فیلدها از Index اونا استفاده کنی ... این به جای دو خط آخر از کد شماست :


da.Fill(ds)
txtsearch.Text = ds.Tables(0).Rows(0)(1).ToString

ALI TT
چهارشنبه 22 آبان 1387, 09:16 صبح
درضم در هنگامی که این کار را می کنی :

con.Open()

بهتر بعد از انجام کارت اونو Close کنی :

con.Close()

تا دسترسی از منابع قطع بشه . ( جهت امنیت )

برای SELECT هم لازم نیست کانکشن خودتو Open کنی .... فقط جهت Insert , Delete , Update این کار الزامیه .

bah_jaf
چهارشنبه 22 آبان 1387, 09:28 صبح
دوست عزیز کجارو دقیقا برات توضیح بدم؟