[مثال] نمونه مثالي کامل در مورد کار با پلاگين SQLite 1.1

kc_nitro

Member
با سلام
یعنی به جای جاهای خالی باید یک کارکتر قرار بگیره تا موقع لود رکوردها، برنامه دچار این مشکل نشه؟
لطفأ برای درک بهتر، تو این نمونه راهنمایی بفرمایید

کد:
SQLQuery1$  = 'INSERT INTO Ozv (Numberozv,Name,LName,Pedar,SH,Born,Grade,Job,Data,Adres,Tel,Mob,Doreh,Teach,Day,Time,Image)'
SQLQuery2$  = ' VALUES (\''+Numberozv$+'\',\''+Name$+'\',\''+LName$+'\',\''+Pedar$+'\',\''+SH$+'\',\''+Born$+'\',\''+Grade$+'\',\''+Job$+'\',\''+Data$+'\',\''+Adres$+'\',\''+Tel$+'\',\''+Mob$+'\',\''+Doreh$+'\',\''+Teach$+'\',\''+Day$+'\',\''+Time$+'\',\''+Image$+'\');'
FinalQuery$ = SQLQuery1$ + SQLQuery2$
با تشکر
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
این کد قسمتی از کد همین مثال هست
درواقع شما هنگام کار با دیتابیس و پلاگین SQLite با همچین کدی زیاد مواجه میشید:
کد:
SQL$=[COLOR=#800000]'SELECT * FROM Ozv;'[/COLOR] 
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","SQL$") 
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Query") 
[COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","Results$") 
[COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","Rows") 
[COLOR=#0000FF]If[/COLOR] (Rows>[COLOR=#ff0000]0[/COLOR]) [COLOR=#0000FF]Then[/COLOR] 
  [COLOR=#0000FF]For[/COLOR] i=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000FF]To[/COLOR] Rows 
    record$[i] = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](Results$,[COLOR=#800000]'#'[/COLOR],i) 
    record$[i] = record$[i] + [COLOR=#800000]'|'[/COLOR] 
    [COLOR=#0000FF]For[/COLOR] j=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000FF]To[/COLOR] [COLOR=#ff0000]7[/COLOR] 
      field$[j] = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](record$[i],[COLOR=#800000]'|'[/COLOR],j) 
    [COLOR=#0000FF]Next[/COLOR] j 
. 
. 
.


در این کد یک درخواست به پلاگین ارسال میشه تا تمام رکوردهای موجود در جدول Ozv رو استخراج کنه
نتیجه ای که از سمت پلاگین به MMB ارسال میشه، برای اینکه بشه پردازشش کرد و همه ی نتایج رو شامل بشه، به صورت یک String هست که با کاراکترهای خاصی داده ها از هم جدا شده ن
بعنوان مثال خروجی پلاگین، که در متغیر $Result ذخیره شده، چیزی شبیه به متن زیر هست:
کد:
field1-1|fielad1-2|field1-3#field2-1|field2-2|field2-3#field3-1|field3-2|field3-3
در این رشته، کاراکتر # رکورد ها، یا سطر ها رو از هم جدا می کنه و کاراکتر | فیلد ها یا ستون ها رو از هم جدا میکنه.
الان این رشته مشابه چیزی هست که در پست قبل توضیح دادم، فرض کنید یک فیلد مقداری نداشته باشه، مثلاً رشته به این شکل باشه:
کد:
field1-1[COLOR=#ff0000][B]||[/B][/COLOR]field1-3#field2-1|field2-2|field2-3#field3-1|field3-2|field3-3
در اینصورت هنگام پردازش آرایه با مشکل مواجه میشین و از رکورد اول، فقط مقدار field1-1 دریافت میشه، و بخاطر اینکه مقدار فیلد دوم خالی هست، MMB نمیتونه مقدار فیلد سوم رو هم بخونه که البته حاوی یک مقدار هست و خالی نیست (field1-3).
بخاطر اینکه از بروز این مشکلات جلوگیری بشه، دو راه وجود داره.
  1. اجازه ندید هیچ فیلدی بدون مقدار باشه، یعنی اگر کاربر یک ورودی رو پر نکرده بود یا خالی گذاشت، بجای اینکه همون مقدار خالی رو به دیتابیس بفرستید، با یک کاراکتر خاص جایگزینش کنید تا هیچ فیلدی بدون مقدار نباشه
  2. بجای اینکه مقدار فیلد در دیتابیس رو تغییر بدید، قبل از پردازش خروجی پلاگین ($Result)، مثل کدی که در پست قبل نوشتم، یک کاراکتر خاص بین جداکننده ها اضافه کنید تا از بروز این مشکل جلوگیری بشه.
 

kc_nitro

Member
با سلام
متوجه منظورتون شدم ولی چون مبتدی هستم نمیدونم دقیقأ از کدی که دادید کجا استفاده کنم
لطفأ تو نمونه بالا که نوشتید، اعمال کنید تا من و امثال من بهتر متوجه بشن
با تشکر
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
SQL$=[COLOR=#800000]'SELECT * FROM Ozv;'[/COLOR]  
[COLOR=#000090][B]PluginSet[/B][/COLOR]("PlugIn","SQL$")  
[COLOR=#000090][B]PluginRun[/B][/COLOR]("PlugIn","Query")  
[COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","Results$")  
[COLOR=#000090][B]PluginGet[/B][/COLOR]("PlugIn","Rows")  
[COLOR=#009000]*************************************************[/COLOR] 
ReplaceThis$ = [COLOR=#800000]'||'[/COLOR]  
HereBy$ = [COLOR=#800000]'| |'[/COLOR]  
Results$ = [COLOR=#000090][B]StrChange[/B][/COLOR](Results$,ReplaceThis$,HereBy$) 
[COLOR=#009000]*************************************************[/COLOR] 
[COLOR=#0000FF]If[/COLOR] (Rows>[COLOR=#ff0000]0[/COLOR]) [COLOR=#0000FF]Then[/COLOR]  
  [COLOR=#0000FF]For[/COLOR] i=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000FF]To[/COLOR] Rows  
    record$[i] = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](Results$,[COLOR=#800000]'#'[/COLOR],i)  
    record$[i] = record$[i] + [COLOR=#800000]'|'[/COLOR]  
    [COLOR=#0000FF]For[/COLOR] j=[COLOR=#ff0000]1[/COLOR] [COLOR=#0000FF]To[/COLOR] [COLOR=#ff0000]7[/COLOR]  
      field$[j] = [COLOR=#000090][B]GetArrayItem[/B][/COLOR](record$[i],[COLOR=#800000]'|'[/COLOR],j)  
    [COLOR=#0000FF]Next[/COLOR] j  
.  
.  
.
 

kc_nitro

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

کد:
If (UpdateSel1=1) Then
  SQL1_Query$='SELECT * FROM Ozv WHERE Numberozv LIKE \''+Numberozv$+'\';'
Else
  If (UpdateSel1=2) Then
    SQL1_Query$='SELECT * FROM Ozv WHERE Name LIKE \''+Name$+'\';'
  Else
    If (UpdateSel1=3) Then
      SQL1_Query$='SELECT * FROM Ozv WHERE LName LIKE \''+LName$+'\';'
    End
  End
End
PluginSet("PlugIn","SQL1_Query$")
PluginRun("PlugIn","Query")
PluginGet("PlugIn","Results$")
PluginGet("PlugIn","Rows")
PluginRun("PlugIn","DBError")
PluginGet("PlugIn","DBError$")
If (DBError$='') Then
  Delimiter$ = '#'
  FirstData$ = GetArrayItem(Results$,Delimiter$,1)
  FirstData$ = FirstData$ + '|'
  NumberOfFields = GetArrayNum(FirstData$,|)
  ID$   = GetArrayItem(FirstData$,|,1)
  ReplaceThis$ = '||'
  HereBy$ = '| |'
  Results$ = StrChange(Results$,ReplaceThis$,HereBy$)
  ** Now Get All Data :
  If (DBError$='') Then
    Delimiter$ = '#'
    For i=1 To Rows
      Rows$[i] = GetArrayItem(Results$,Delimiter$,i)
      Rows$[i] = Rows$[i] + '|'
      NumberOfFields = GetArrayNum(Rows$[i],|)
      For j=i To Rows
        ID$[i]   = GetArrayItem(FirstData$,|,1)
      Next j
    Next i
  End
  If (Rows=0) Then
    If (UpdateSel1=1) Then
      text$='اين شماره عضويت در سيستم موجود نميباشد'
      flag=48+0+0+0+0
      param$=text$+','+CHAR(flag)
      MessageEx("خطا","param$")
      RunScript("Empty")
    Else
      If (UpdateSel1=2) Then
        text$='چنين عضوي در سيستم موجود نميباشد'
        flag=48+0+0+0+0
        param$=text$+','+CHAR(flag)
        MessageEx("خطا","param$")
        RunScript("Empty")
      Else
        If (UpdateSel1=3) Then
          text$='عضوي با چنين نام خانوادگي در سيستم موجود نميباشد'
          flag=48+0+0+0+0
          param$=text$+','+CHAR(flag)
          MessageEx("خطا","param$")
          RunScript("Empty")
        End
      End
    End
  Else
    RunScript("View")
  End
End
 

sajadms

Member
یه باگی که این مثال داره اینه که همه فیلدها باید پر بشن تا تو صفحه های edit یا delete نمایش اطلاعات درست باشه

به این صورت عمل کردم ولی باز هم نشد
لطفأ راهنمایی بفرمایید اشکال کارم کجاست
همون طور که جناب nevercom گفتن با این کار باید مشکل برنامتون حل بشه در ضمن ایشون کد رو هم که کامل نوشتن! شما می تونین همیشه بعد از دریافت دستورات از پلاگینتون این تغیرات رو در Results انجام بدین .
متوجه منظورتون شدم ولی چون مبتدی هستم نمیدونم دقیقأ از کدی که دادید کجا استفاده کنم
یه کار دیگه هم که می تونین انجام بدین اینه که تو اسکریپت Addozv قبل هرکاری با چند تا شرط ساده مقدار EditBox ها رو چک کنی اگه خالی بود به یه کاراکتر space یعنی کاراکتر شماره ی 32 تغیر بدین
 
آخرین ویرایش:

kc_nitro

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

پیوست ها

  • Sample.rar
    125.3 کیلوبایت · بازدیدها: 78

sajadms

Member
اگه امکان داره برای درک بهتر، تو نمونه هایی که پیوست کردم این دستور رو اعمال بفرمایید
این نمونه رو فک کنم پیج ادیت همون پروژتون هست که واسه رفع مشکل پیج لیست ویو گذاشته بودین من پیج ادیت همون پروژره رو واستون درست کردم میزام ببینین شما فقط کافیه که تو اسکریپت Editozv همون اول که یه تعداد شرط رو گزاشتم واسه همه ی فیلد های دیتابیس همین کار رو انجام بدین این کد ها رو منظورم هست
[[PHPS]If (SH$='') Then
SH$=' '
End
If (Pedar$='') Then
Pedar$=' '
End[/PHPS]
واسه پیج add هم اسکریپت Addozv رو هم که تو همین پیج گذاشتم رو به پیج add برنامه منتقل کنید
 

پیوست ها

  • edit.rar
    145.3 کیلوبایت · بازدیدها: 92

kc_nitro

Member
با سلام
ممنون از راهنماییتون ولی اسکریپت Addozv تو فایلی که گذاشتید، نیست
لطفأ فایل رو مجددأ بررسی کنید
و فکر کنم بهتر باشه همون اول یعنی تو addozv این کار انجام بشه
با تشکر
 
آخرین ویرایش:

sajadms

Member
ممنون از راهنماییتون ولی اسکریپت Addozv تو فایلی که گذاشتید، نیست
لطفأ فایل رو مجددأ بررسی کنید
دوست عزیز چک کردم ، اگه دقت کنید اسکریپت AddOzv رو تو همین پیج بغل اسکریپت EditOzv واستون گذاشتم کافیه اونو تو پیج Add کپی کنی
و فکر کنم بهتر باشه همون اول یعنی تو addozv این کار انجام بشه
نمیشه فقط تو اسکریپت AddOzv این کارو انجام داد چون تو قسمت ادیت برنامه هم کاربر ممکنه دیتابیس رو مورد ویرایش قرار بده و یکی از فیلدها رو خالی پر کنه پس باید حتما همون جوری که انجام دادم تو هر دو اسکریپت این کار انجام بشه تا امکان خطا در برنامه رو از بین ببرین
 

sajadms

Member
ممنون از راهنماییتون ولی اسکریپت Addozv تو فایلی که گذاشتید، نیست
لطفأ فایل رو مجددأ بررسی کنید
دوست عزیز چک کردم ، اگه دقت کنید اسکریپت AddOzv رو تو همین پیج بغل اسکریپت EditOzv واستون گذاشتم کافیه اونو تو پیج Add کپی کنی
و فکر کنم بهتر باشه همون اول یعنی تو addozv این کار انجام بشه
نمیشه فقط تو اسکریپت AddOzv این کارو انجام داد چون تو قسمت ادیت برنامه هم کاربر ممکنه دیتابیس رو مورد ویرایش قرار بده و یکی از فیلدها رو خالی پر کنه پس باید حتما همون جوری که انجام دادم تو هر دو اسکریپت این کار انجام بشه تا امکان خطا در برنامه رو از بین ببرین
 

kc_nitro

Member
با سلام
وقتی از یک عضو پرینت میگیریم فقط کارکترهای لاتین خوانا هستند و کارکترهای فارسی به این صورتن

70998801341023647893.jpg

لطفأ راهنمایی بفرمایید
با تشکر
 

sajadms

Member
وقتی از یک عضو پرینت میگیریم فقط کارکترهای لاتین خوانا هستند
دوست عزیز به این سوال تا حالا خیلی جاها از این انجمن پاسخ داده شده سرچ می کردین حتما می تونستین پیدا کنین
ولی در مورد سوالتون شما می تونید بعد از خروجی گرفتن از فایل اچ تی ام ال با پلاگین Utile Plugin v0.3 اونو به UTF8 تبدیل کنین
 

kc_nitro

Member
با سلام
لطفأ محبت کنید بفرمایید چطور باید از این پلاگین تو این پروژه استفاده کرد؟
من نمونه همراه پلاگین رو دان کردم ولی متوجه نشدم
با تشکر
 

sajadms

Member
چطور باید از این پلاگین تو این پروژه استفاده کرد
شما باید تو اسکریپت پرینت برنامه بعد از اینکه فایل اچ تی ام ال رو ساختین یعنی بعد این خطوط از برنامه
[PHPS]For i=1 To 31
drt = StrToFile(filename$,line$,TRUE,TRUE)
Next i
FileExist("filename$","isThere")[/PHPS]
این کد ها رو اضافه کنید
[PHPS]filein$ ='e:\print.html'
fileout$ ='e:\print7.html'
PluginSet("PlugIn","filein$")
PluginSet("PlugIn","fileout$")
PluginRun("PlugIn","uconvert")
PluginGet("PlugIn","result$")
**Message("result$","")[/PHPS]
در اینجا filein مسیر فایل HTML هست که قبلا تو همون اسکریپت print نمونه مثال ساختین و مسیرش رو هم تو filename$ همون اول اسکریپت دادین
fileout هم آدرس جدیدی هست که باید بعد تبدیل شدن فایل HTML ساخته بشه
result$ هم در صورت کانورت شدن فایل از پلاگین جهت اطلاع از ok شدن هستش
 

kc_nitro

Member
با سلام
کدها و پلاگین و وارد کردم ولی تبدیل نمیشه
لطفأ راهنمایی بفرمایید
با تشکر
[PHPS]For i=1 To 29
drt = StrToFile(filename$,line$,TRUE,TRUE)
Next i
FileExist("filename$","isThere")
filein$ ='<SrcDir>\Print.html'
fileout$ ='<SrcDir>\print7.html'
PluginSet("PlugIn1","filein$")
PluginSet("PlugIn1","fileout$")
PluginRun("PlugIn1","uconvert")
PluginGet("PlugIn1","result$")
Message("result$","با موفقيت")
If (isThere = 1) Then
Browser("Browser1","fileout$")
Browser("Browser1","Print")
Else
Message("Nothing To Print!","")
Return()
End

[/PHPS]
 

sajadms

Member
مسیری که فایل HTML رو ذخیره کردین همین مسیری هست که به filein دادین؟
پیغامی که بعد از اجرای این دستور می گیرین چی هستش ؟
به مسیری که فایل رو تبدیل کردین برین و ببینین که فایل HTML ساخته شده یا نه و اگه ساخته شده بود با بروزر ویندوز اونو باز کنید ببینید مشکل داره یا نه ؟
 

kc_nitro

Member
با سلام
مسیر ها درست هستند ولی فایل دوم html ساخته نمیشه
با تشکر
 

پیوست ها

  • Print.rar
    61.7 کیلوبایت · بازدیدها: 54

kc_nitro

Member
با سلام
ظاهرأ مشکل از لود کردن خود پلاگین تو برنامه هستش چون هم وقتی آدرس پلاگین رو با ماکرو <Embedded> و هم با ماکرو <SrcDir> میدم توضیحات پلاگین رو (Programmer: BEHESHT (c) http://0777.ir ,Utile Plugin v0.3

E-Mail: [email protected]) تو قسمت مربوطه نمیآره و کلأ لودش نمیکنه
با تشکر
 

kc_nitro

Member
با سلام
مشکل با ورژن 1 پلاگین حل شد، نمیدونم چرا با ورژن 3 اون مشکلو داشتم!؟!؟
با تشکر
 
آخرین ویرایش:

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

بالا