رفتن به مطلب
  • 0

کار با دیتا بیس و لیست ویو


AMiR

سوال

سلام

تو دیتابیس یه جدولی به این صورت داریم

klwm3wmzm1tx4136x1zk.jpg

ستون title میره تو لیست ویو

حالا اگه بخواییم وقتی مثلا رو A کلیک شد B رو تو یه layout دیگه نشون بده ( همین موضوع برای بقیه گزینه ها هم باشه) باید چیکار کرد؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

15 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

فرض کنیم داده ای به نام bank از نوع SQL رو قبلا initialize کردید.

این کد باعث میشه با کلیک هر گزینه آیتم روبروش توی Tabel فراخوانی و روی Label1 نوشته بشه.

فرقی هم نمیکنه که Label1 توی همون لایوت listview1 باشه یا یه لایوت دیگه. فقط مهم اینه که تو یه اکتیویتی تعریف شده باشند یا اگه اکتیویتی ها هم متفاوته Label1 باید از نوع Global تعریف بشه و موقع لود کردنش باید اول اسم اکتیویتی بیاد بعد نقطه بعد Label1 امیدوارم مشکل با این حل بشه

Sub ListView1_ItemClick (Position As Int, Value As Object)
   Dim cursor1 As Cursor
   cursor1 = bank.ExecQuery("SELECT About From Tabel1")
   cursor1.Position = Value - 1
   label1.Text = cursor1.GetString("About")
End Sub

راستی باید وقتی آیتم های Titel رو میدی به لیست ویو به ترتیب وارد کنی و value ها از یک شروع بشه تا n مثلا با حلفه for میشه.

راستش یکم گیج شدم!

این سورس رو اجرا میکنم رو لیست ویو کیلک میکنم، ارور میده

کجای کد مشکل داره؟


Sub Globals

Private ListView1 As ListView
Dim sq1 As SQL
Dim bank As SQL
Dim cursor1 As Cursor
Private Label1 As Label
End Sub

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("main")

If File.Exists(File.DirInternal,"data.db")=False Then
File.Copy(File.DirAssets,"data.db",File.DirInternal,"data.db")
End If

If sq1.IsInitialized=False Then
sq1.Initialize(File.DirInternal,"data.db",False)
End If

cursor1=sq1.ExecQuery("select * from table1")

For i=0 To 4
cursor1.Position=i
ListView1.AddSingleLine(cursor1.GetString("title"))
Next
End Sub

Sub ListView1_ItemClick (Position As Int, Value As Object)

cursor1 = bank.ExecQuery("SELECT About From table1")
cursor1.Position = Value - 1
Activity.LoadLayout("label1")
Label1.Text = cursor1.GetString("About")

End Sub



لینک ارسال
به اشتراک گذاری در سایت های دیگر

احتمالا چون bank رو initialize نکردی ارور میده. نیازی هم نیست از دو تا داده SQL استفاده کنی.

این جوری درست میشه:

Sub Globals

   Private ListView1 As ListView
   Dim sq1 As SQL

   Dim cursor1 As Cursor    
   Private Label1 As Label
   End Sub

Sub Activity_Create(FirstTime As Boolean)

   Activity.LoadLayout("main")

   If File.Exists(File.DirInternal,"data.db")=False Then
   File.Copy(File.DirAssets,"data.db",File.DirInternal,"data.db")
   End If

   If sq1.IsInitialized=False Then
   sq1.Initialize(File.DirInternal,"data.db",False)
   End If

   cursor1=sq1.ExecQuery("select * from table1")

   For i=0 To 4
   cursor1.Position=i
   ListView1.AddSingleLine(cursor1.GetString("title"))
   Next
End Sub

Sub ListView1_ItemClick (Position As Int, Value As Object)

cursor1.close
   cursor1 = sql1.ExecQuery("SELECT About From table1")
   cursor1.Position = Value - 1
   Activity.LoadLayout("label1")
   Label1.Text = cursor1.GetString("About")

End Sub  

سعی کن کد ها رو درک کنی و اگه جایی ایراد داشتی دوباره بپرس چون اگه این کد ها رو فقط کپی کنی دوباره به مشکل بر می خوری.

راستی اسم جدولی که داری ازش اطلاعات میگیری توی دیتابیس چیه؟

اگه Tabel1 باشه این کد ها جواب میده اما اگه چیز دیگه ای باشه خودت باید توی این کدها به جای Tabel1 جایگزینش کنی.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سعی کن کد ها رو درک کنی و اگه جایی ایراد داشتی دوباره بپرس چون اگه این کد ها رو فقط کپی کنی دوباره به مشکل بر می خوری.

راستی اسم جدولی که داری ازش اطلاعات میگیری توی دیتابیس چیه؟

اگه Tabel1 باشه این کد ها جواب میده اما اگه چیز دیگه ای باشه خودت باید توی این کدها به جای Tabel1 جایگزینش کنی.

کد هایی که خودم مینویسم رو میتونم متوجه شم چی نوشتم ولی یکم تو دستورات مشکل دارم قبلا هم آشنایی با VB6 نداتشم ( دنبال آموزش VB6 هم رفتم ولی هنوز نتونستم منبعی که دستورات رو همراه با قواعدش بصورت جامع توضیح بده، پیدا نکردم، اگه چیزی سراغ دارین، ممنون میشم معرفی کنین )

اسم جدول table1 هست / تو لیست ویو گزینه ها هم میاد ولی وقتی رو هر آیتم کلیک میکنم این ارور رو میده

jusimckhi2te80og2ffl.jpg

البته این ارور با ارور قبلی که گفتم فرق داره،ارور قبلی بخاطر Initialize نکردن بود!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کد من یه جاش اشتباه بوده.

تو ارور هم که خیلی واضح داره میگه (( فرمت عدد نیاز است)) یعنی ما یه جا تو رویداد کلیک به جای متغیری با فرمت عدد از فرمت دیگه ای استفاده کردیم.

Sub ListView1_ItemClick (Position As Int, Value As Object)

خوب مطابق کد بالا فرمت Value آبجکته و فرمت position عددی هستش.

ولی این نباید اصولا ارور بده مگه اینکه شما قبلا به لست ویو اصلا value نداده باشی.

ایراد کار همینجاس که ما به جای position از value استفاده کردیم.

حالا خودت تو کد تغییرات ایجاد بده خبرشم بده.

راهنمایی تغیرات هم اینه که position مقدارش از صفر شروع میشه.

.......................................................................................

مورد دوم ایرادت هم که یه جورایی سلیقه اییه و الان دیدم اینه که به نظرم وقتی می خوای آیتم جدیدی به یه لیست ویو اضافه کنی از AddSingleLine2 استفاده کن که میشه به هر آیتمی یه value هم داد که بعدن تو کلیک یا جاهای دیگه میشه ازش استفاده کرد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

فک کنم از AddSingleLine2 استفاده کنم بهتر باشه

ولی وقتی این کد رو مینویسم

 ListView1.AddSingleLine2(cursor1.GetString("title",1))

ارور پارامتر بیش از حد میده !!

باید چیکارش کرد؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

فک کنم از AddSingleLine2 استفاده کنم بهتر باشه

ولی وقتی این کد رو مینویسم

 ListView1.AddSingleLine2(cursor1.GetString("title",1))

ارور پارامتر بیش از حد میده !!

باید چیکارش کرد؟

دقت کن برادر

:   ListView1.AddSingleLine2(cursor1.GetString("title"),1)  

تو حلقه که استفاده می کنی به جای اون عدد باید بزاری i

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دقت کن برادر

:   ListView1.AddSingleLine2(cursor1.GetString("title"),1)  

تو حلقه که استفاده می کنی به جای اون عدد باید بزاری i

از i استفاده میکردم ولی باز ارور میداد ولی مثل اینکه مشکل این بود که پرانتز رو جای درست نمیذاشتم*سرپایین* ( یه تغییراتی هم تو آیتم کلیک دادم دیگه درست شد)

دستتون درد نکنه خلاصه این موضوع حل شد ( خیلی گیرش بودم)

ولی الآن نوشته هایی که گذاشتم تو لیبل افتاده روی همون لیست ویو!

یه سوالی هم داشتم: میشه چند دیتابیس ( مثلا 10 تا ) به هم وصل کرد ؟ برای کار جستجو و علاقه مندی

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

یه اسپلش درست کردم تو اندازه 1080×1920 که هم برنامه خیلی سنگین شد هم تو بعضی صفحه ها تمام صفحه نشون داده نمیشد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام عزیز اینا آموزشاش تو سایت هست میتونید سرچ کنید و پیدا کنید!

اگر هم سرچ نمیکنید جدا جدا هرکدوم رو تو تاپیک های مختلف سوال کنید تا جواب بدیم

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام عزیز اینا آموزشاش تو سایت هست میتونید سرچ کنید و پیدا کنید!

اگر هم سرچ نمیکنید جدا جدا هرکدوم رو تو تاپیک های مختلف سوال کنید تا جواب بدیم

موفق باشید

سلام

راستش من انجمن رو میگردم اگه آموزشش رو پیدا نکنم، مشکلم رو میپرسم ! الآن آموزشی برای حل کردن مشکل رو هم افتادن متن دو تا layout پیدا نکردم

واسه اسپلش آموزشش هست ولی این با کتایخونه انیمیشن درست شده، من یه عکس با تایمر واسه اسپلش استفاده میکنم، واسه همین تو سایزش مشکل دارم

به هر حال اگه شما آموزشی برای حل اون مشکل متنا دارین، ممنون میشم لینکش رو بدین

لینک ارسال
به اشتراک گذاری در سایت های دیگر

دوست عزیز اگر آموزش هم وجود نداره تو یه تاپیک جدید بدید نه اینجا

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام به احتمال زیاد فکر کنم آموزشش تو سایت هست

حقیقتش الان خونه نیستم یکم صبرکنی من بیام سورس واست مینویسم یا بی زحمت سورستونو آپلود کنید برام قرار بدید

تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام خسته نباشید . خوب شما با یه حلقه ایتم های ستون Title رو میگیرید و به ترتیب تو لیست ویو نمایش میدید .

ایتوری A میشه ایتم یک C میشه دو و ... وبا ایتم کلیک ازشون استفاده میکنیم .

مشکلتون رو واضح تر بگین . نمیتونید با ایتم کلیک کار کنید یا نمیتونید متن هارو از ستون About استخراج کنید .

برای گرفتن ستون About به این شکل عمل میکنیم :


Dim Cursor1 As Cursor   

Cursor1 = SQL1.ExecQuery("SELECT col2 FROM table1")

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ستون تایتل رو میتونم استخراج کنم

مشکل اینجاست که نمیدونم چیکار کنم، تا وقتی A رو میزنم، محتویات B رو تو یه Layout دیگه تو یه لیبلی نشونم بده

همین روند واسه C و E و G باشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

فرض کنیم داده ای به نام bank از نوع SQL رو قبلا initialize کردید.

این کد باعث میشه با کلیک هر گزینه آیتم روبروش توی Tabel فراخوانی و روی Label1 نوشته بشه.

فرقی هم نمیکنه که Label1 توی همون لایوت listview1 باشه یا یه لایوت دیگه. فقط مهم اینه که تو یه اکتیویتی تعریف شده باشند یا اگه اکتیویتی ها هم متفاوته Label1 باید از نوع Global تعریف بشه و موقع لود کردنش باید اول اسم اکتیویتی بیاد بعد نقطه بعد Label1 امیدوارم مشکل با این حل بشه

Sub ListView1_ItemClick (Position As Int, Value As Object)
Dim cursor1 As Cursor
cursor1 = bank.ExecQuery("SELECT About From Tabel1")
cursor1.Position = Value - 1
label1.Text = cursor1.GetString("About")
End Sub

راستی باید وقتی آیتم های Titel رو میدی به لیست ویو به ترتیب وارد کنی و value ها از یک شروع بشه تا n مثلا با حلفه for میشه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...