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

جستجو+لیمیت


nadersalim

سوال

سلام دوستان

من از سورس زیر برای نمایش رکوردهام  استفاده کرده ام بخاطر اینکه تعداد رکورد ها خیلی زیاده  اونارو 20 تا 20 تا لود میکنم

برای جستجو در رکوردها در jost_Click (دکمه جستجو) از کوئری زیر استفاده کرده ام:

cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like  '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20")

حالا مشکل من اینه که نتایج جستجو رو میبره آخر اسکرول ویو نمایش میده.(یعنی باید کلی اسکرول ویو رو پایین برد تا به ته اسکرول ونتایج جستجو رسید)

مشکل از کجاست؟ .تشکر

Sub Process_Globals
	Private sql1 As SQL
	Private cur As Cursor 
	Dim meqdar As String

End Sub

Sub Globals

	Private inx As Int = 0
	Private sv As ScrollView
	Private PanelHeight As Int = 5dip
	Private STU As StringUtils 
	Dim ht1,ht2 As Float 
	Private yekan As Typeface = Typeface.LoadFromAssets("yekan.ttf")
	Private jost As Button
	Private AutoCompleteEditText1 As AutoCompleteEditText
	
End Sub

Sub Art(txt As String,leb As Label,font As Typeface,size As Int,lebGravity As Int,lebTextColor As Int) As Float
	Dim ht As Float 
	Dim before,after As Float
	Dim Obj1 As Reflector
	leb.text = txt
	leb.TextSize = size
	leb.Gravity  = lebGravity
	leb.TextColor = lebTextColor
	leb.Left = leb.Left
	leb.Typeface = font
	ht = STU.MeasureMultilineTextHeight(leb , txt)
	Obj1.Target = leb  
	before = Obj1.RunMethod("getLineHeight")
	Obj1.Target = leb 
	Obj1.RunMethod3("setLineSpacing", .10, "java.lang.float", 1.3, "java.lang.float")
	Obj1.Target = leb 
	after = Obj1.RunMethod("getLineHeight") 
	ht = ((after * ht)/before)
	leb.Height = ht
	Return  ht
End Sub

Sub Activity_Create(FirstTime As Boolean)
	Activity.LoadLayout("Serch")
	If File.Exists(File.DirRootExternal ,"data.db") = False Then _
	 File.Copy(File.DirAssets,"data.db",File.DirRootExternal,"data.db")
	
	If sql1.IsInitialized=False Then
	sql1.Initialize(File.DirInternal,"data.db",False)
	End If
	
	LoadRecords
	
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub LoadRecords()
	cur = sql1.ExecQuery("SELECT * FROM tbl1 WHERE id > " & inx & " LIMIT 0,20")
		
	For i = 0 To cur.RowCount-1
	cur.Position = i
		
	Dim pnl As Panel : pnl.Initialize("pnl")
	Dim lblEn As Label : lblEn.Initialize("")
	
	lblEn.text = cur.GetString("onvan")
		
	sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) 
	pnl.Color = Colors.RGB(0, 108, 153)
	pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0)
		
	ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black )
		
	pnl.Height = ht1+ht2
	pnl.Tag=cur.GetString("id")
		
	PanelHeight = PanelHeight + pnl.Height + 1dip
	inx = inx + 1
	Next
	sv.Panel.Height = PanelHeight
	Activity.Title = "Total Loaded Records : " & inx
End Sub

Sub sv_ScrollChanged(Position As Int)
	If (Position+sv.Height) >= PanelHeight Then
	LoadRecords  
	DoEvents 
End If
End Sub


Sub jost_Click   '  <====================کلید جستجو
	
	sv.Panel.RemoveAllViews
	cur = sql1.ExecQuery("SELECT * FROM beh WHERE onvan like  '%" & AutoCompleteEditText1.Text & "%' LIMIT 0,20")
	For i = 0 To cur.RowCount-1
	cur.Position = i
		
	Dim pnl As Panel : pnl.Initialize("pnl")
	Dim lblEn As Label : lblEn.Initialize("")
		
	lblEn.text = cur.GetString("onvan")
		
	sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) 
	pnl.Color = Colors.RGB(0, 108, 153)
		
	pnl.AddView(lblEn,10dip, 0 , pnl.Width - 20dip, 0)
		
	ht2 = Art( lblEn.text , lblEn , yekan,17 , Gravity.LEFT , Colors.Black )
		
	pnl.Height = ht1+ht2
	pnl.Tag=cur.GetString("id")
		
	PanelHeight = PanelHeight + pnl.Height + 1dip
	inx = inx + 1
	Next
	sv.Panel.Height = PanelHeight
	Activity.Title = "Total Loaded Records : " & inx


End Sub

Sub pnl_Click
	Dim b As Panel
	b=Sender
	meqdar=b.Tag
	StartActivity(nmysh)
	
End Sub

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

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

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

مشکل من اینه که بالای رکوردهای پیدا شده فضای خالی زیادی میذاره

 

 دوست عزیز فکر کنم مشکلو حل کردم :ok:  

 

این کدهای پایین رو امتحان کن دقیقا در خط اول دکمه جستجو بذار، برای بنده جواب داده   :cheshmak: 

	Sv.Panel.RemoveAllViews
	PanelHeight = sv.Height - sv.Height
	sv.ScrollPosition = PanelHeight
لینک ارسال
به اشتراک گذاری در سایت های دیگر

کسی نیست که بتونه به من کمک کنه؟!

 
Sv.Panel.RemoveAllViews
 
Sv.ScrollPosition =  PanelHeight
 
تو کد بالا علاوه بر remove all بیا scrollposition مساوی ارتفاع پنل بگیر ببین اینطوری جواب میده
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

 
Sv.Panel.RemoveAllViews
 
Sv.ScrollPosition =  PanelHeight
 
تو کد بالا علاوه بر remove all بیا scrollposition مساوی ارتفاع پنل بگیر ببین اینطوری جواب میده

 

تشکر دوست عزیز! قبلا این کارو کردم اما نشد

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

 

 
Sv.Panel.RemoveAllViews
 
Sv.ScrollPosition =  PanelHeight
 
تو کد بالا علاوه بر remove all بیا scrollposition مساوی ارتفاع پنل بگیر ببین اینطوری جواب میده

 

مشکل من اینه که بالای رکوردهای پیدا شده فضای خالی زیادی میذاره

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

سلام برادر

این کد رو قبل از نمایش دادن نتایج، استفاده کن 

scrollview1.scrollpostion = 0

اگه مشکل فقط مکان اسکرول ویو هست، که این مکان رو میاره بالا و صفرش میکنه

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

سلام برادر

این کد رو قبل از نمایش دادن نتایج، استفاده کن 

scrollview1.scrollpostion = 0

اگه مشکل فقط مکان اسکرول ویو هست، که این مکان رو میاره بالا و صفرش میکنه

سلام اقا شهاب خسته نباشید

من این کد رو اول دکمه جستجو گذاشتم اما هیچ تغییری نکرد.

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

شما هم خسته نباشی عزیزم

بعد از این خط یه امتحان بکن

sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

شما هم خسته نباشی عزیزم

بعد از این خط یه امتحان بکن

sv.Panel.AddView(pnl,5dip,PanelHeight,100%x-10dip,0) 

نه بازم نشد!

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

این رو تصحیح کن ببین جواب میده یا نه

sv.Panel.AddView(pnl,5dip,0,100%x-10dip,100%y) 

جای پنل هایت، بذار صفر مقدار عرضش هم درست کن

ببین جواب میده یا نه

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

این رو تصحیح کن ببین جواب میده یا نه

sv.Panel.AddView(pnl,5dip,0,100%x-10dip,100%y) 

جای پنل هایت، بذار صفر مقدار عرضش هم درست کن

ببین جواب میده یا نه

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

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

برای بار اول که وارد برنامه شدم وجستجو زدم  نتایج جستجو رو اورد  بالا نشان داد  اما زیر رکوردها ی پیدا شده به اندازه 20تا رکورد  خالی میذاره وبعدش از رکورد 20به بعد دیتا بیس  نمایش میده

بار دوم که برنامه رو  اجرا کردم وارد جستجو که شدم خطای زیر رو داد:

post-2944-0-66944900-1438693875_thumb.jpg

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

برادرم

دشمنت شرمنده:gol:

لطف کن اگر برات ممکنه، بذار سورست رو اینجا، تا هم من و هم دوستان بررسیش کنیم

اگرم نه که کنار دکمه اجرا، release رو تغییر بده به debug legacy و ببین به کدوم خط گیر میده...

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

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

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

این سورس اصلی نیست ، قسمتی (قسمت جستجو)  از اونه  که دیتا و... دستکاری شده ممنون میشم کمکم کنید

search.rar

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

برادرم

دشمنت شرمنده :gol:

لطف کن اگر برات ممکنه، بذار سورست رو اینجا، تا هم من و هم دوستان بررسیش کنیم

اگرم نه که کنار دکمه اجرا، release رو تغییر بده به debug legacy و ببین به کدوم خط گیر میده...

وقت بخیر! قسمتی از سورس رو گذاشتم بی زحمت  اگه وقت کردید ی  نگاهی بیاندازید تشکر

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

 

 دوست عزیز فکر کنم مشکلو حل کردم :ok:  

 

این کدهای پایین رو امتحان کن دقیقا در خط اول دکمه جستجو بذار، برای بنده جواب داده   :cheshmak: 

	Sv.Panel.RemoveAllViews
	PanelHeight = sv.Height - sv.Height
	sv.ScrollPosition = PanelHeight

دست گلت درد نکنه داداش ! :41:  اره جواب داد  خیلی خیلی ممنون :give_heart:

چند روزه که درگیرش  بودم

انشاا... که موفق باشی

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

بایگانی شده

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

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

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