Fa درباره لود SQL Lite

Pensive-pith

Active Member
سلام
راستش من هزارتا داده ریختم تو SQL lite اما مشکل اینه که لودش خیلی طول میکشه می خوام بدونم هیچ راهی نیست که لود بر نامه سریع تر بشه
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اصولا نباید طول بکشه بستگی به این داره که از چه روشی استفاده کرده باشید
ببینید پلاگین اطلاعات رو خیلی سریع بر میگردونه اما مثلا زمانی که صرف میشه بیشتر بخاطر نمایش اونها در mmb هست
مثلا اگر بخاید اون هزارتا رکورد رو تو یه لیست باکس لود کنید مطمئنا خیلی طول میکشه.
 

MVGM_Soft

Active Member
بله دقیقا 1000 تا داده موجود در دیتابیس در uolistview نمایش داده میشه که در سیستم من و ایشون که قوی هستش حدود 10 , 12 ثانیه طول میکشه
و طی این لود شدن برنامه هنگ کرده و یک کلیک کافیه تا برنامه بسته بشه
و بدتر از اون اینکه این 1000 تا برای تست هست در واقع بالای 15000 داده در دیتابیس باید قرار بگیره
آیا راه حلی برای رفع این مشکل هست؟
 

JavidX

Apadana Developer
بله دقیقا 1000 تا داده موجود در دیتابیس در uolistview نمایش داده میشه که در سیستم من و ایشون که قوی هستش حدود 10 , 12 ثانیه طول میکشه
و طی این لود شدن برنامه هنگ کرده و یک کلیک کافیه تا برنامه بسته بشه
و بدتر از اون اینکه این 1000 تا برای تست هست در واقع بالای 15000 داده در دیتابیس باید قرار بگیره
آیا راه حلی برای رفع این مشکل هست؟
سلام
نمیدونم که آیا توی پلاگینی که آقای فرهادی ساختن دستور BeginUpdate هست یا نه، ولی اگه باشه، پاسخ و راه حل اصلی به مشکلات شماست. (ساختنش 5 دقیقه طول میکشه!) در واقع کار BeginUpdate اینه که از رسم لیست ویو در هر بار تغییرات جلوگیری میکنه و پس از اعمال تغییرات شما میتونید با EndUpdate کارتون رو به پایان برسونید و لیست ویو رو رسم کنید.

موفق باشید
 

MVGM_Soft

Active Member
ممنون آقا جواد
دوستان آیا کسی می دونه که این پلاگین قابلیتی که آقا جواد گفتن داره یا نه؟ و اگر داره طریقه استفادش به چه صورت هست؟
 

JavidX

Apadana Developer
ممنون آقا جواد
دوستان آیا کسی می دونه که این پلاگین قابلیتی که آقا جواد گفتن داره یا نه؟ و اگر داره طریقه استفادش به چه صورت هست؟
اگه داشته باشه قطعا فراخوانی هر کدوم از این دو دستور با یه خط هست. به این صورت که قبل از اضافه کردن داده ها BeginUpdate میکنید و بعد از اتمام کار EndUpdate رو فراخوانی میکنید. این مورد خیالتون رو به طور کامل از اینکه سرعت پایین بخاطر لیست باشه راحت میکنه.
موفق باشید
جاوید
 

MVGM_Soft

Active Member
الان من داده ها رو به این صورت از دیتابیس گرفتم ولی متوجه نشدم با این دو تابعی که شما فرمودید باید چه کاری انجام بدم

کد:
SQL$ = 'SELECT sh_barge, code_n, mablagh FROM Barge;'
PluginSet("SQL_Plugin","SQL$")
PluginRun("SQL_Plugin","Query")
PluginGet("SQL_Plugin","Results$")
PluginGet("SQL_Plugin","Rows")
PluginRun("SQL_Plugin","DBError")
PluginGet("SQL_Plugin","DBError$")
If (DBError$='') Then
  Delimiter$ = '#'
  For i=1 To Rows
    Rows$[i] = GetArrayItem(Results$,Delimiter$,i)
    Rows$[i] = Rows$[i] + '|'
    NumberOfFields = GetArrayNum(Rows$[i],|)
  Next i
  For j=1 To Rows
    sh_barge$[j] = GetArrayItem(Rows$[j],|,1)
    code_n$[j]  = GetArrayItem(Rows$[j],|,2)
    mablagh$[j]     = GetArrayItem(Rows$[j],|,3)
  Next j
  ScriptTimer("ShowInListView","100")
Else
  Message("Error occured.","DBError$")
End
 

JavidX

Apadana Developer
الان من داده ها رو به این صورت از دیتابیس گرفتم ولی متوجه نشدم با این دو تابعی که شما فرمودید باید چه کاری انجام بدم

کد:
SQL$ = 'SELECT sh_barge, code_n, mablagh FROM Barge;'
PluginSet("SQL_Plugin","SQL$")
PluginRun("SQL_Plugin","Query")
PluginGet("SQL_Plugin","Results$")
PluginGet("SQL_Plugin","Rows")
PluginRun("SQL_Plugin","DBError")
PluginGet("SQL_Plugin","DBError$")
If (DBError$='') Then
  Delimiter$ = '#'
  For i=1 To Rows
    Rows$[i] = GetArrayItem(Results$,Delimiter$,i)
    Rows$[i] = Rows$[i] + '|'
    NumberOfFields = GetArrayNum(Rows$[i],|)
  Next i
  For j=1 To Rows
    sh_barge$[j] = GetArrayItem(Rows$[j],|,1)
    code_n$[j]  = GetArrayItem(Rows$[j],|,2)
    mablagh$[j]     = GetArrayItem(Rows$[j],|,3)
  Next j
  ScriptTimer("ShowInListView","100")
Else
  Message("Error occured.","DBError$")
End
توی این قسمت از کد هیچ کاری نباید انجام بدید. باید توی اون قسمتی که به UOListView شیء اضافه میکنه قبل از هر کاری BeginUpdate و در نهایت EndUpdate کنید. (البته به شرطی که این دو کد در پلاگین تعبیه شده باشن)
 
آخرین ویرایش:

MVGM_Soft

Active Member
من کد هایی که فرمودید رو به اینصورت اضافه کردم
درست اضافه شده؟
الان تغییر سرعتی نداشت
این به دلیل عدم پشتیبانی پلاگین هست یا من کد رو اشتباه وارد کردم:
کد:
PluginSet("UOListViewPlugIn","BeginUpdate")
PluginSet("UOListViewPlugIn","100")
set$ = 'Col1'
PluginSet("UOListViewPlugIn","60")
PluginSet("UOListViewPlugIn","set$")
PluginRun("UOListViewPlugIn","LVAddCol")
set$ = 'Col2'
PluginSet("UOListViewPlugIn","90")
PluginSet("UOListViewPlugIn","set$")
PluginRun("UOListViewPlugIn","LVAddCol")
set$ = 'Col3'
PluginSet("UOListViewPlugIn","89")
PluginSet("UOListViewPlugIn","set$")
PluginRun("UOListViewPlugIn","LVAddCol")
** add field
delimiter$ = ','
For i=1 To Rows
  Text$ = mablagh$[i]+','+code_n$[i]+','+sh_barge$[i]
  PluginSet("UOListViewPlugIn","Text$")
  PluginSet("UOListViewPlugIn","delimiter$")
  PluginRun("UOListViewPlugIn","LVAddVal")
Next i
s$='show'
PluginSet("UOListViewPlugIn","s$")
PluginRun("UOListViewPlugIn","LVScript")
Hide("loading")
PluginSet("UOListViewPlugIn","EndUpdate")
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مطمئن نیستم اما فکر کنم بشه تمام رکورد ها رو بصورت یک آرایه به پلاگین فرستاد
اگر اینطور باشه تست کنید ببینید تاثیری در سرعت داره یا نه
اصولا اگر این روش تعبیه شده باشه (در چند پلاگین دیدم الان دقیقا خاطرم نیست که uo هم همچین قابلیتی داشت یا نه) چون داده ها یکجا ارسال میشن باید بهبود چشمگیری در سرعت احساس کنید
تست کنید ببینید همچین قابلیتی وجود داره یا نه
 

MVGM_Soft

Active Member
کدی که در پست شماره 8 هست
کد دریافت داده ها از دیتابیس هست
که در آرایه قرار دادمشون
درسته؟
 

JavidX

Apadana Developer
کدی که در پست شماره 8 هست
کد دریافت داده ها از دیتابیس هست
که در آرایه قرار دادمشون
درسته؟
بله از دستورSELECT مشخصه.
یه موضوع دیگه ای که هست که سرعت رو کاهش میده استفاده های متعدد از سری دستورات Array هست چون اینطوری مجبوره بیلدر از اول رشته رو چک کنه و بریزه توی آرایه. واسه همینه که توی آپادانا دستور DelimitedStringToArray گذاشته شده. اگه بیلدرم داشت خوب بود.
تغییر نکردن سرعت احتمالا بخاطر اینه که پلاگین ساپورت نمیکنه. اگه آقای فرهادی خودشون اراده کنن کلا در عرض 5 دقیقه این امکان رو اضافه میکنن.
 

MVGM_Soft

Active Member
ببخشید من نام کاربری آقا فرهاد رو نمی دونم چی هست
کسی می تونه نام کاربری ایشون یا آی دی یا شماره ای یا یه راه تماسی بفرماید که من مزاحم ایشون برای حل این مشکل بشم
ممنون از لطفتون
 

JavidX

Apadana Developer
ببخشید من نام کاربری آقا فرهاد رو نمی دونم چی هست
کسی می تونه نام کاربری ایشون یا آی دی یا شماره ای یا یه راه تماسی بفرماید که من مزاحم ایشون برای حل این مشکل بشم
ممنون از لطفتون
ایشون آقای محسن فرهادی هستن با نام کاربری Free Man
 

جدیدترین ارسال ها

بالا