چند پرسش در مورد پلاگين UO lite

hassanzare

Member
با عرض سلام و خسته نباشيد خدمت همه ي دوستان اميدوارم منو ببخشين

بنده 4 سوال در زمينه
1-حذف از روي پلاگين
2-نوشتن مبلغ در Editbox و انتقال آن به پلاگين
3-تلفيق دو عملگر Like و Order by
4-پرينت گرفتن از پلاگين

است كه سوالاتمو به صورت كامل در فايل زير پيوست كردم اگه امكانش وجود داره رو همين مثال توضيح بدين

در مورد پرينت گرفتن هم خواهشمندم يكم بيشتر توضيح بدين چون من مثال Sample SQLite آقاي محمود حسيني رو ديدم و از قسمت پرينت اون سر در نياوردم
در ضمن فرق پرينت كردن من با ايشون اينه كه من مي خوام از ليست پرينت بگيرم
خيلي ممنون مي شم اگه جواب بدين
 

پیوست ها

  • Checkup.zip
    692.1 کیلوبایت · بازدیدها: 58

hassanzare

Member
دوستان عزيز اگه افتخار بدين جواب سوالات منو بدين يك دنيا ممنون ميشم آخه با اين سوالات كلي از مشكلات من حل مي شه
 

Amit13

Well-Known Member
فقط يه نكته كه داخل مثالتون ديدم بگم:

اين آدرس پايين دو نقطه لازم نداره
کد:
db_path$ = '<SrcDir>:\Checkup.db'

يعني درستش اينه:

کد:
 db_path$ = '<SrcDir>\Checkup.db'
 

hassanzare

Member
فقط يه نكته كه داخل مثالتون ديدم بگم:

اين آدرس پايين دو نقطه لازم نداره
کد:
db_path$ = '<SrcDir>:\Checkup.db'

يعني درستش اينه:

کد:
 db_path$ = '<SrcDir>\Checkup.db'

مرسي از توجه تون وقتي آپلودش كردم فهميدم اشتباه است آخه واسه راحتي كار از درايو C استفاده مي كردم كه وقتي خواستم آپ كنم اونو به SrcDir تبديلش كردم

راستي جناب Amit13 شما قول داده بودين اگه كار با ديتابيس و شروع كردم كمكم كنيدااااااااا
 

Amit13

Well-Known Member
سوال اول و سومت رو ميتوني به راحتي در گوگل پيدا كني: مثلا در گوگل سرچ كن : Like in sql و مثال ها رو ببين.

دو دستور sql هست:
براي پاك كردن مثلا:
کد:
DELETE FROM telbook WHERE FatherNode=Ali;

like و order كه به هم ربطي ندارند.شما ميتوني آخر دستورت order رو براي مرتب سازي برروي يك فيلد خاص انجام بدي.مثل مثال ساده زير.
کد:
SELECT Name,Email,Telephone FROM telbook WHERE Name LIKE '%$user%' order by Telephone;

حالا شما اگه با مفهوم الحاق رشته ها در بيلدر آشنا باشيد ميتونيد هر دستور sql رو كه بخواين به رشته ي بيلدري تبديل كنيد و به پلاگين بفرستيد.(مثل سوال دومتون)

راستي جناب Amit13 شما قول داده بودين اگه كار با ديتابيس و شروع كردم كمكم كنيداااااا
قول؟؟من؟؟؟هندونه ميزاري؟؟ عزيز باور كن منم مثل خودت اصل مديران و كاربران متخصص هستن،كه واقعا هم گل اند. فقط چون اين سوال رو جوابش رو ميدونستم جواب دادم تا شما سريعتر به جواب برسي.اگر هم اشتباه كنم مديران اشتباهات منم ميگن.ولي مثلا سوال چهارمت ، جوابش رو ميدونم ولي مطمئنم استاداي انجمن راحتر به شما الحاق ميكنن. اگه ببينم جواب گرفتيد ،خيلي خوشحال ميشم كه تونستم به يكي كمك كنم.
 
آخرین ویرایش:

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
1-حذف از روي پلاگين

دوستمون در مورد سینتکس DELETE توضیح دادن، بهتره همیشه در ساختار جدول یک فیلد بعنوان ID داشته باشید، یعنی فیلدی که برای هر رکورد منحصربفرد هست، چیزی مثل شماره فاکتور، یا شماره دانشجویی...، چون ممکنه چند نفر باشن که اسمشون شبیه هم باشه یا..
تو مثال پرسیده بودید که یک رکورد رو از ListView انتخاب کنید و همون DELETE بشه، خب شما میتونید مثلاً همون فیلد ID رو در ListView نمایش بدید، و وقتی که روی دکمه ی DELETE کلیک شد ID رکورد انتخاب شده رو بخونید و بر اساس اون Query رو ایجاد کنید
اگر در پریافت اطلاعات از ListView مشکل دارید مثال پلاگین رو بررسی کنید.

2-نوشتن مبلغ در Editbox و انتقال آن به پلاگين
متوجه این سوالتون نشدم، شما که دارید در کدهاتون نوشته های داخل EditBox رو به Query تبدیل می کنید و دستور SQL رو اجرا میکنید:
کد:
sql_query1$  = 'INSERT INTO tell (name,num,num1,bank,num2,num5,num8)'
sql_query2$  = ' VALUES ("'+name$+'",'+num$+','+num1$+',"'+bank$+'","'+num2$+'","'+num5$+'","'+num8$+'");'
query$ = sql_query1$ + sql_query2$
گرچه بهتره نام فیلدها رو طوری انتخاب کنید که توضیح بده محتواش چی هست


3-تلفيق دو عملگر Like و Order by
خب در مورد LIKE توضیح دادن:
کد:
SELECT Name,Email,Telephone FROM telbook WHERE Name LIKE '%$user%' order by Telephone DESC;
الان دوتا علامت % دو طرف $user یعنی اینکه این کلمه میتونه بین هرچندتا کاراکتر دیگه باشه، مثلاً aabndsusermjkj b
ORDER هم برای مرتب سازی هست که میتونید از ASC و DESC هم برای ترتیب نزولی یا صعودی اسفاده کنید.

4-پرينت گرفتن از پلاگين
ببینید پرینت گرفتن یه روند ساده هست، اما باید یکم با HTML هم آشنا باشید، خیلی کم البته وبتونید که چطور رشته ها رو ترکیب کنید که در نهایت کد HTML معتبری تولید بشه
اینو ببینید:
کد:
ENGOpen$ = '        <p style="font-family:Tahoma;font-size:9pt;font-weight:bold;text-align:left;margin:2px 0;">'
ENGClose$ = '</p>'
PEROpen$ = '        <p style="font-family:Tahoma;color:#585858;font-size:9pt;font-weight:bold;text-align:right;margin:2px 0;">'
PERClose$ = '</p>'
و این رو ببنید:
کد:
  SQLQuery$ = 'SELECT * FROM Dictionary WHERE English LIKE "' + Search$ + '%" ORDER BY English ASC;'
  PluginSet("PlugIn","SQLQuery$")
  PluginRun("PlugIn","Query")
  PluginGet("PlugIn","Results$")
  If (Results$ <> '') Then
    ** Here we can get the number of rows in result set as an integer.
    PluginGet("PlugIn","Rows")
    PluginRun("PlugIn","DBError")
    PluginGet("PlugIn","DBError$")
    If (DBError$ = '') Then
      Delimiter$ = '#'
      ** as you know, SQLite PlugIn returns results or result set in a delimited string.
      For i = 1 To Rows
        WORD$[i] = GetArrayItem(Results$,Delimiter$,i)
        WORD$[i] = WORD$[i] + '|'
        English$[i] = GetArrayItem(WORD$[i],|,1)
        Persian$[i] = GetArrayItem(WORD$[i],|,2)
        ** This part of the script puts the results between HTML tags, because we show the results in the Browser object.
        Result$ = Result$ + ENGOpen$ + English$[i] + SAY1$ + CHAR(i) + SAY2$ + ENGClose$ + CHR(13)+CHR(10) + PEROpen$ + Persian$[i] + PERClose$ + CHR(13)+CHR(10)
        If (i <> Rows) Then
          Result$ = Result$ + HR$ + CHR(13)+CHR(10)
        End
        Refresh("")
      Next i
[B].[/B]
[B].[/B]
[B].[/B]
کد رو از یه پروژه ی قدیمی کپی کردم، خط مربوط به متغیر $Result رو ببینید
یک عبارتی بین $ENGOpen و $ENGClose قرار گرفته، که در کد قبلتر تعریف کردیم که اون متغیر ها حاوی کد HTML هست، یعنی کد نهایی به شکلی تشکیل میشه که داده ها بین تگ های مورد نظر قرار میگیرن و در نهایت همه ی رشته ها به هم وصل میشه و یه کد HTML میسازن که اون کد رو در فایل ذخیره میکنیم و اون فایل رو در شئ Browser لود میکنیم و با استفاده از دستور Print چاپش می کنیم.
اما مهم اینه که شما قالب HTML رو درست کنید و بعد مشخص کنید هر داده بین چه تگ هایی قرار گرفته و اون تگ ها رو به این شکل در برنامه استفاده کنید...
 

hassanzare

Member
با تشكر ويژه از همه ي دوستان
من با ساختن ID كه قراره منحصر به فرد باشه يه مشكل كوچولو دارم اونم اينه كه من در بعضي از مواقع نمي دونم جند تا اسم و وارد ليستم كردم و موقع اضافه كردن اسم به مشكل بر مي خورم اكه بشه يه اسكريپتي ساخت كه اول بگرده ببينه تو ديتابيس چندتا ID ثبت شده و اون تعداد و بعلاوه ي يك كنه و در قسمت ID بنويسه خيلي خوب مشه

در مورد Editbox (مبلغ) كه گفتم منظورم اينه كه وقتي listview نمايش داده ميشه قسمت مبلغ از سمت راست بعد از هر سه تا صفر يه ويرگول بزاره مثل
1200000=====>>1,200,000
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
وقتی دیتابیس رو ایجاد میکنید می تونید برای فیلد خصوصیت PRIMARY Key رو فعال کنید، در اینصورت هربار که رکوردی اضافه بشه این فیلد مقداری منحصر بفرد خواهد داشت.
کد:
CREATE TABLE test (ID INTEGER PRIMARY KEY);

در مورد سوال دومتون شما مبلغ رو به همون شکل وارد دیتابیس کنید و وقتی داده رو از دیتابیس خوندید و خواستید نمایشش بدید، فرمتش کنید و هر سه رقم ویرگول بزارید.
چیزی مثل این کد:
کد:
Num$ = EditBox$
Format$ = Num$
comma$ = ','
For i=1 To Infinity
  StrLen = LEN(Num$)
  If (StrLen <= 3) Then
    Break()
  End
  Pos = StrLen-2
  Format$ = StrIns(Format$,comma$,Pos)
  Num$ = StrDel(Num$,Pos,3)
  LoadText("Text","Format$")
Next i
 

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

بالا