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

اپدیت فیلد fav در دیتابیس برای بوکمارک


mahdig502

سوال

سلام

من ی تاپیک قبلا زدم که اخرش درست ب نتیجه نرسیدم بعدش خودم رفتم سراغش و تقریبا 80% کارا حل کردم فقط موندم چجوری فیلد fav را اپدیت کنم

ببینید کل کد به این شکل بود:

(Sub Activity_Create(FirstTime As Boolean
("Activity.LoadLayout("sv1


If File.Exists(File.DirInternal,"smslove.db")=False Then
File.copy(File.DirAssets,"smslove.db",File.DirInternal,"smslove.db")
End If
SQL1.Initialize(File.DirInternal,"smslove.db",True)
cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")


myfont = Typeface.LoadFromAssets("BTraffic.ttf")


For i=0 To cur1.RowCount-1
cur1.Position=i
text= cur1.GetString("smslove")


ScrollView1.Panel.Color = Colors.Transparent


Dim p1 As Panel
p1.Initialize("")
p1.LoadLayout("sms")
ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)


share.Tag = i
copy.Tag = i


ht=art(text,Label1,myfont,20)
Label1.TextColor=Colors.White
p1.Height=ht+70dip
PanelHeight=PanelHeight+ht+70dip
Next
ScrollView1.Panel.Height=PanelHeight
End Sub
Sub art(txt As String,leb As Label,font As Typeface,size As Int) As Float      
Dim before,after As Float
Dim Obj1 As Reflector
leb.text=txt
leb.TextSize=size
leb.Gravity=Gravity.CENTER
leb.Left=leb.Left
leb.Typeface=font
ht = StrUtil.MeasureMultilineTextHeight(leb , txt)
            Obj1.Target = leb  
            before = Obj1.RunMethod("getLineHeight")
            Obj1.Target = leb 
            Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.5, "java.lang.float")
            Obj1.Target = leb 
            after = Obj1.RunMethod("getLineHeight")
            ht = ((after * ht)/before)
leb.Height = ht
Return  ht


End Sub
Sub Activity_Resume


End Sub


Sub Activity_Pause (UserClosed As Boolean)


End Sub
Sub share_Click
Dim cursor3 As Cursor
    cursor3 = SQL1.ExecQuery("SELECT smslove FROM tbllove")
    Dim btn2 As Button
    btn2=Sender
    cursor3.Position =btn2.Tag
    Dim matnsms As Label
    matnsms.Initialize("")
    matnsms.text=cursor3.GetString("smslove")
    cursor3.Close
StartActivity(sh.ShareText(matnsms.text,"اشتراک گذاری با :"))
End Sub


Sub copy_Click
Dim something As BClipboard
Dim cursor2 As Cursor
cursor2 = SQL1.ExecQuery("SELECT smslove FROM tbllove")
Dim btn2 As Button
btn2=Sender
cursor2.Position =btn2.Tag
something.clrText 
    something.settext(cursor2.GetString("smslove"))
ToastMessageShow("متن در کلیپ بورد کپی شد",False)
cursor2.Close
End Sub

من اومدم تو دکمه بوکمارک اینا نوشتم

Sub Btnlike_Click


Dim check As Int
     check = cur1.Getint("fav")
     
     If check = 0 Then
   
     
         SQL1.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&cur1.GetInt("id"))
SQL1.IsInitialized
    cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")
         ToastMessageShow("به علاقه مندی ها اضافه شد",False)




End If
End Sub

قسمت فراخوانی پیام ها با fav=1 را حل کردم

با این کد وقتی دکمه بوکمارک را میزنم اخرین پیامم انگار فقط fav=1 میش  

دیگه دومی را نمیتونم بوکمارک کنم و این ارور میاد 

tz08_32.jpg

 

مشکلش چیه؟ :fekr:

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

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

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

توی لایه s1 بیا کد Btnlike_Click رو کلا حذف کن و به این تغییر بده :

Sub Btnlike_Click
	Dim btn2 As Button
	btn2=Sender
	Dim sqlnew As SQL
	Dim curnew As Cursor
	sqlnew.Initialize(File.DirInternal,"smslove.db",True)
	curnew = sqlnew.ExecQuery("SELECT * FROM tbllove where id ="&btn2.Tag)
	curnew.Position = 0
	Dim check As Int
    check = curnew.Getint("fav")    
	 If check = 0 Then
	   	 sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 1 WHERE id = "&btn2.Tag)
	   	 ToastMessageShow("به علاقه مندی ها اضافه شد",False)		 
	 Else If check = 1 Then
	  	 sqlnew.ExecNonQuery("UPDATE tbllove SET fav = 0 WHERE id = "&btn2.Tag)
	   	ToastMessageShow("از علاقه مندی ها حذف شد",False)
	End If
End Sub

Activity Create رو هم به این تغییر بده :

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("sv1")
	
	If File.Exists(File.DirInternal,"smslove.db")=False Then
	File.copy(File.DirAssets,"smslove.db",File.DirInternal,"smslove.db")
	End If
	SQL1.Initialize(File.DirInternal,"smslove.db",True)
	cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")
	
	myfont = Typeface.LoadFromAssets("BTraffic.ttf")
	
	For i=0 To cur1.RowCount-1
	cur1.Position=i
	text= cur1.GetString("smslove")
	
	ScrollView1.Panel.Color = Colors.Transparent
	
	Dim p1 As Panel
	p1.Initialize("")
	p1.LoadLayout("sms")
	ScrollView1.Panel.AddView(p1,0,PanelHeight,100%x,100dip)

	share.Tag = i
	copy.Tag = i
	Btnlike.Tag = cur1.GetString("id")
	ht=art(text,Label1,myfont,20)
	Label1.TextColor=Colors.White
	p1.Height=ht+70dip
	PanelHeight=PanelHeight+ht+70dip
	Next
	ScrollView1.Panel.Height=PanelHeight
End Sub

مشکل واسه لایه s1 حل میشه ...

واسه بقیه لایه هات هم ببین چیکار کردم مثل همین برو جلو

 

کد نویسیت و روشت خیلی بده. اصلا خودمم نفهمیدم چیکار کردم. مجبور شدم یک cursor و sql جدید تعریف کنم و کلا کاری به کار کدهات نداشته باشم

خودتونو تقویت کنید

موفق باشید

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

من دارم برنامتو نگاه میکنم چرا4 تا دیتابیس داری؟

این اشتباه رو برطرف کن دیتابیست بهتره که یکی باشه هرچیزی که خواستی رو در جدول ها ذخیره کن

 

تا من ببینم کجای کارت مشکل داره

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

من دارم برنامتو نگاه میکنم چرا4 تا دیتابیس داری؟

این اشتباه رو برطرف کن دیتابیست بهتره که یکی باشه هرچیزی که خواستی رو در جدول ها ذخیره کن

 

تا من ببینم کجای کارت مشکل داره

استاد قبلا اومدم تو یک دیتابیس 4 تا جدول ساختم که نشد هی ارور میداد

الان دوباره میرم درستش کنم ببینم میش یا نه 

:heart:

 

 

 

 

 

کد نویسیت و روشت خیلی بده. اصلا خودمم نفهمیدم چیکار کردم. مجبور شدم یک cursor و sql جدید تعریف کنم و کلا کاری به کار کدهات نداشته باشم

خودتونو تقویت کنید

موفق باشید

میدونم خیلی غیراستاندارد کد مینویسم  :fool_mini:

مشکل هم حل شد مرسی بابت وقتی ک گذاشتین :heart:

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

اساتید من یه مشکل دیگ برام پیش اومد 

واس تغییر عکس باتن 

واسش این کد را در اکتیویتی کریت گذاشتم ولی نشد فقط روی اخری اعمال میشد:

Dim check As Int
    check = cur1.Getint("fav") 
If check=0 Then
Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets"f0.png"))
 Else If check=1 Then
Btnlike.SetBackgroundImage(LoadBitmap(File.DirAssets,"f1.png"))
 End If

اگر هم میش علت این که همش روی اخری اعمال میشه را بهم بگید بدونم چیه علتش :DD:

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

سلام

طبق این کد درستش کنید :

Sub Activity_Create(FirstTime As Boolean)

	Activity.LoadLayout("txt")
	Stxt.Panel.LoadLayout("txta")
sql1.Initialize(File.DirInternal,"book.db",False)

	cur1=sql1.ExecQuery("select * FROM book")
	cur1.Position=AcFehrest.pos
   Ltxt1.text= cur1.GetString("Matn")
 Favv=cur1.GetString("Fav")

 If Favv=0 Then
Fav.SetBackgroundImage(LoadBitmap(File.DirAssets,"f0.png"))
 Else 
Fav.SetBackgroundImage(LoadBitmap(File.DirAssets,"f1.png"))
 End If
Sub Fav_Click
Dim id As Int

id=cur1.GetString("id")
 If Favv=0 Then

 cur1.Position=0
 sql1.ExecNonQuery("UPDATE book SET Fav = 1 where id ='" & id & "'")
 
 ToastMessageShow("مطلب مورد نظر با موفقیت به لیست علاقه مندی ها اضافه شد",False)
Fav.SetBackgroundImage(LoadBitmap(File.DirAssets,"f1.png"))
 Else 
 sql1.ExecNonQuery("UPDATE book SET Fav = 0 where id ='" & id & "'")
 cur1.Position=0
 ToastMessageShow( "مطلب مورد نظر از لیست علاقه مندی ها خارج شد",False) 
Fav.SetBackgroundImage(LoadBitmap(File.DirAssets,"f0.png"))
 End If
 cur1=sql1.ExecQuery("SELECT * FROM book  where id ='" & id & "'")
 cur1.Position=0
  Favv=cur1.GetString("Fav")
End Sub

اگر نتونستید درست کنید خود پروژه رو پیوست کنید لطفا...

 

در ضمن کلا بعضی جاها کد اضافی دارید به نظر من

مثلا توی رویداد btnlike_click :

SQL1.IsInitialized
    cur1 = SQL1.ExecQuery("SELECT * FROM tbllove")
لینک ارسال
به اشتراک گذاری در سایت های دیگر

استاد من اومدم جایگزین کردم 

اکتیویتی کریت که فرق چندانی نداشت ب جز قسمت cur1.Position=AcFehrest.pos  که من متوجه نشدم AcFehrest.pos چیه

و اخرش هم که اجرا کردم مث دفه قبل فقط اخرین پیام بوکمارک میشد

اینم پروژه :

http://s7.picofile.com/file/8248449384/smss.rar.html

 

من که میگم هر چی هست زیر سر این cur1.Position چون با تغییرش ی اتفاقاتی میافتاد  :wacko1: 

بازم مرسی ک وقت گذاشتید 

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

ی چیزی بگید لطفا :sorry:

سلام، برای اسپمتون اخطار گرفتید

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

سوال بعدیتون رو سرچ کنید، اگر پاسخی پیدا نکردید ، یه تاپیک بزنید

در کل، برای مشکل دوم، میتونید از تگ و سندر استفاده کنید به نظرم و دکمه مربوط به هر ایتم مولتی پنل رو عوض کنید

اگر درباره موضوع تاپیک سوال دیگه ای ندارید، بهترین پاسخ رو انتخاب کنید که تاپیک به سرانجام برسه...

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

بایگانی شده

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

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

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