«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
جستجو در دیتابیس در b4a با سورس :: گیم اور

گیم اور


خصوصی نظر نذارید نمی تونیم جواب بدیم.

عضو کانال تلگرام ما بشید توش گروه هم می گیم

لینک کانال خصوصی گیم اور :

https://t.me/gameoverblog

پیوندهای روزانه
پیوندها

جستجو در دیتابیس در b4a با سورس

دوشنبه, ۶ مهر ۱۳۹۴، ۰۳:۵۹ ق.ظ

منبع:gameover.blog.ir

برای اینکه دیتا بیس بسازید نیاز به نرم افزار navicat دارید که ورژن premium رو از اینترنت دانلود کنید . اموزشم نمی خواد ور برید حله winking
-

یه کانکشن و سپس یه دیتا بیس و سپس یک جدول به نام table1 بسازید.
اسم دیتا بیس من db1.db هست که از نوع sql Lite 3 ایجادش کردم.
اسم جدول من table1 هست که دارای دو ستون esm و nomre هست و یه سری اسم و مقدار که داخلش ریختم :
[تصویر: navicat.jpg]

دیتابیس ایجاد شده رو با نام db1.db در پوشه ی Files داخل پوشه ی پروژه ی خودتون بریزید.

سپس وارد b4a بشید و در بخش Files (پایین سمت راست) رفته و Sync رو بزنید تا فایل های اضافه شده به پوشه ی Files رو داخل پروژه شناسایی و بار کنه.

به منوی Designers برید و یک اکتیویتی با نام main ایجاد کنید و یک listView و یک کادر متن(EditText ) بسازید و همونجا از منوی Tools->Generate members کدهای تعریف کادر متن و بقیه که لازم دونستید generate کنید(متوجه نمی شید تیک بزنید و توی کدها نگاه کنید ببینید رویدادها و متغیرهای لازم تعریف میشه)

کدهای Globals (بخش sub نه process) ما اینان:

کد:
Sub Globals
    Private EditText1 As EditText
    Private ListView1 As ListView    
    Dim SQL1 As SQL
    Dim cursor1 As Cursor
End Sub
کدهای ایجاد اکتیویتی هم اینان :

کد:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("main")
    Activity.Color=Colors.RGB(26,188,156)'#1abc9c
    Activity.Title="sajjad3011"
    
    Activity.LoadLayout("main")
    If File.Exists(File.DirInternal,"db1.db") = False Then
        File.Copy(File.DirAssets,"db1.db",File.DirInternal,"db1.db")
    End If
    
    If SQL1.IsInitialized = False Then
        SQL1.Initialize(File.DirInternal, "db1.db", False)
    End If
    
    DBload("")
    
End Sub

حالا باید کد رویداد EditText1_TextChanged رو بسازیم که وقتی توی کادر متنی ویرایش یا تغییراتی اعمال کردیم جستجو و نتیجه اون در لیست نمایان بشه:
کد:
Sub EditText1_TextChanged (Old As String, New As String)
    DBload(New)
End Sub
در کد فوق تابعی به نام DBload رو با مقدار تولید شده در متغیر New که خودش میشناسه فراخوانی کرده و ورودی دادیم.
اینم کد تابع یا ساب روتین یا روال DBload:
کد:
Sub DBload(q As String)
Private condition As String
q=q.Trim'remove spaces
condition="WHERE esm LIKE '%" & q & "%'"
ListView1.Clear'need to clear the list
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition)
For i = 0 To cursor1.RowCount - 1
cursor1.Position = i
ListView1.AddSingleLine(cursor1.GetString("esm")& "|" &cursor1.GetString("nomre"))
ListView1.SingleLineLayout.ItemHeight = 40
ListView1.SingleLineLayout.Label.TextSize = 20
ListView1.SingleLineLayout.Label.TextColor = Colors.Black
ListView1.SingleLineLayout.Label.Color = Colors.White
Next
End Sub
توضیح کد فوق:
با تابع Trim فضای خالی راست و چپ رشته ی ورودی که به جای q نشسته رو پاک می کنیم.
condition شرط رشته ای هست که پیوند میزنیم به متن SQL که قراره برای عمل پرس و جو یا query تولید بشه.
با دستور زیر q رو در like برای جستجو جاساز کردیم:
کد:
condition="WHERE esm LIKE '%" & q & "%'"
دستورات SQL هم بلد نیستید توی اینترنت ریخته اموزش های زیادی.
علامت & برای چسبودندن یا پیوند زدن دو عبارت رشته ای به هم بکار می ره.
سپس ابتدا لیست رو خالی کردیم :
کد:
ListView1.Clear
سپس کرسر ایجاد شده رو اجرا و نتیجه رو دریافت کردیم :
کد:
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition)
اولین رکورد(سطر) شمارش 0 هست .
cursor1.RowCount تعداد کل سطرهای یافت شده طبق جستجو رو بر می گردونه.
پس آخرین سطر اندیسش یکی کمتر از تعداد هست.
واسه همین توی حلقه ی For از 0 تا cursor1.RowCount - 1 تکرار رو انجام می دیم و سطر به سطر میایم ستون ها رو می خونیم(ستون های esm و nomre) و ب علامت "|" از هم جدا کردیم برای زیبایی نمایش در listView :
کد:
For i = 0 To cursor1.RowCount - 1
cursor1.Position = i
ListView1.AddSingleLine(cursor1.GetString("esm")& "|" &cursor1.GetString("nomre"))
ListView1.SingleLineLayout.ItemHeight = 40
ListView1.SingleLineLayout.Label.TextSize = 20
ListView1.SingleLineLayout.Label.TextColor = Colors.Black
ListView1.SingleLineLayout.Label.Color = Colors.White
Next
با TextSize اندازه متن رو با 20 تنظیم کردیم(واسه تغییرش می تونید یه نوار لغزان بذارید و ذخیره کنید توی فایل یا دیتابیس یا هر ترفند دیگه ای که شگرد خودتونهbig grin )
-
بعد از اجرا می تونید تایپ کنید و مثل pmd dictionary کار می کنه. بقیشو بدوhappy
[تصویر: search_db.jpg]
-
اینم سورس که خودم ساختم:
http://s5.picofile.com/file/8157708068/search_db.zip.html

اگه بخواید مرتب سازی هم انجام بده مثلا بر حسب ستون esm باید order by esm رو به آخر query(بازجست) اضافه کنید:
یعنی اینطوری:

کد:
cursor1 = SQL1.ExecQuery("SELECT * FROM table1 " & condition & "ORDER BY esm")
نتیجه رو ببینید اسمی که تایپ کردم وسه جستجو مرتب لیست میشه بر حسب حروف الفبا :
[تصویر: order_by.jpg]

تابع file.copy میاد یه فایل (در اینجا db1.db که اسم بانک اطلاعاتی ما هست و جدول table1 در اون هست) رو کپی می کنه از مکان اول به مکان مقصد.
file.dirAssets آدرس پوشه ی files داخل خود پروژه رو میده که توی apk پک و بسته بندی میشه و توی اندروید بعد از نصب unPack خواهد شد. و در حقیقت دیتابیس db1.db رو به صورت SQL lite 3 در نرم افزار premium navicat ساختیم و جدول table1 رو هم براش ایجاد کردیم و دیتابیس رو با نام db1.db ذخیره کردیم در پوشه ی Files پروژمون big grin

File.DirInternal هم پوشه ی داخلی اندروید رو چک می کنه که آیا قبلا دیتابیس رو ما کپی کرده بودیم یا خیر؟
اگه کپی کرده بودیم دیگه کپی نکن.
البته می تونیم شرط اول رو برداریم و همیشه بگیم هر وقت یه چیز جدید نصب کردیم تو بیا دیتابیس آپدیت شده ی جدید رو کپی کن.
دلیل اینکه کپی می کنه هم اینه که توی پوشه ی داخلی باشه سرعت کار کمی بالا می ره یا دلایل امنیتی دیگه big grin
-
تمام خط های فوق واسه اتصال به بانک db1.mdb بود.
--
اما بعدش اید جدول رو بخونیم و دستورات SQL برای انتخاب سطرها و ویرایش و آپدیت و درج و مرتب سازی و ... که اینا همشو نمی شد یه جا نوشت چون کثیف کاری میشد.
برای همن منظور یه ساب روتین(sub یا روال یا تابع یا procedure هم می گن) نوشتیم به اسم DBload("") که بیاد اطلاعات جدول رو لود کنه و کدهای لازم رو داخلش نوشتیم و فقط اسمشو صدا زدیم که خودش اونو اجرا کنه به همین سادگی big grin
در مورد چپ و راست چین کردن باید خصوصیات EditText یا ListView یا Label یا حالا غیره رو تغییر بدی که اونو بعدا در بخش دیگه ای بپرس چون الان ذهنم درگیره.
اما این که از word بخونه کار منطقی نیست باید بریزی توی یه ساختار جدولی یال فایل های متنی یا دیتابیس و بهترین کار اینه که با نرم افزارهای مختلف یا ببری به XML (زبان انتقال و حمل داده ها) و بعدش ببری که اکسل یا اکسس یا SQL و ... که اونم الان نمی دونم و بحثش نیست.
شما کارهایی که میخوای بکنی اینه که لغات زبانی PDF یا word ای که توی نت پیدا کردی(مثل من و ... big grin) رو میخوای ببری به access و اونا همه چیزو آماده نذاشتن تا ما سریع به پول برسیم.
پس باید زحمت بکشید خودتون دستی یکی دو ماه وقت بذارید بکوب یه چیز خوب بسازید یا اینکه یه سری دیتابیس های حاوی لغات رو از تولید کننده ها بخرید ولی ارزشش رو داره.
-
البته ایده های بسیاری هست که باید تمرکز کرد روی برنامه نویسی و طراحی.
-
امیدوارم انشاء ا... با تلاش و مشورت راه براتون باز بشه. بازم سوالی بود بپرسید


خرید آموزش b4a فارسی با قیمت کم:
http://gameover.blog.ir/1395/04/03/%DA%A9%D8%AA%D8%A7%D8%A8-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%85%D9%88%D8%B2%D8%B4-b4a-%D8%B3%D8%A7%D8%AE%D8%AA-%DA%AF%DB%8C%D9%85-%D8%A2%D9%88%D8%B1
موافقین ۰ مخالفین ۰ ۹۴/۰۷/۰۶
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی