id1385
دوشنبه 13 بهمن 1393, 23:27 عصر
با سلام
یکی از دوستان یه آموزش میخواست برای کار با یک پایگاه داده خارج از خود برنامه، که یه نمونه براش برنامه درست کردم که با کتابخانه dao هستش، اتچ می کنم شاید مورد استفاده دوستان قرار بگیره.
آموزش:
توی این فایلهای ارسال شده یک فایل بعنوان برنامه و یک برنامه بعنوان پایگاه داده هستش، در نمونه آدرس دهی بصورت مطلق است ولی میشه آدرس دهی رو طوری نوشت که قابل تغییر باشه و بشه از مسیرهای مختلف خوندش.
توی فایلی که بصورت برنامه هست یک کلاس نوشتم هرچند خیلی پیچیده نیست ولی خوبه و کار راه اندازه که کار اتصال به پایگاه داده که با رمز پروتکت شده رو انجام میده هر چند بدون رمز نیز میتونه باشه.
محتویات کلاس:
Public Function conectToDB(dbPath As String, Optional dbPassword As String) As Boolean
همونطور که از اسمش پیداست کار اتصال با پایگاه داده ات و دوتا ورودی داره که یکی آدرس فایل مورد نظر و دیگر رمز فایل است که در صورت نیاز وارد می شود، قبل ازهر کاری باید این عمل انجام شود.
روش استفاده :
اول باید یک اینستنس از کلاس میگیریم به این شکل
Dim dB As New dBA
که dBA همون نام کلاس هستش
رمزدار
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB", "123456789"
بدون رمز
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB", ""
' or
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB"
فانکشن بعدی
Public Function setSql(StrSql As String) As Boolean
همونطور که از اسمش پیداست sql رو میگیره
به این صورت:
dB.setSql "SELECT MAX(userId) AS highest FROM tbl_a"
' or
dB.setSql "tbl_a"
' or
dB.setSql "SELECT * FROM tbl_a WHERE userId ='" & newUserId & "'"
برای این فانکشن یا متد هر نوع sql ای که قابلیت اجرا داشته باشه را میشه ارجاع داد
متد بعدی
Public Function isValidProcess() As Boolean
این متد چک میکنه که آیا پردازش قابل اجرا هست یا نه، به این صورت که وقتی یک sql ارجاع داده میشه اگر recordset با خطا مواجه باشه و ست نشده باشه false رو بر میگردونه
متد آخر این کلاس
Public Function gRecordCount() As String
اینم تعداد رکوردهای سلکت شده رو برمیگردونه هر چند اینو توی پردازش هم میشه گرفت
بعد از اینکه رکوردست ایجاد شد میتوان بقیه پردازش رو اعم از select, add,delete,update بوسیله dB.rst. پیگیری کرد
مانند کد زیر که وظیفه اففزودن یک مورد را بعهده میگیره:
'add new item
If (dB.isValidProcess) Then
dB.rst.AddNew
dB.rst.Fields("userId") = "sampleID"
dB.rst.Fields("name") = "That's User "
dB.rst.Fields("date") = Now
dB.rst.Update
'close database
dB.cloesDB
Else
'Process not valid
MsgBox "invalid"
End If
نمونه استفاده کامل از کد :
Option Compare Database
Private Sub Command0_Click()
'create instance of class
Dim dB As New dBA
Dim newUserId As String
newUserId = 0
'connect to database using custom params
dB.conectToDB CurrentProject.Path & "\dB\data.mdB", "8661645875"
'get highest value in userid field and sum +1
dB.setSql "SELECT MAX(userId) AS highest FROM tbl_a"
If IsNull(dB.rst.Fields("highest")) = False Then
newUserId = dB.rst.Fields("highest")
End If
newUserId = CInt(newUserId) + 1
'select a table
dB.setSql "tbl_a"
'add new item
If (dB.isValidProcess) Then
dB.rst.AddNew
dB.rst.Fields("userId") = newUserId
dB.rst.Fields("name") = "Tha's User " & newUserId
dB.rst.Fields("date") = Now
dB.rst.Update
'select last inserted data
dB.setSql "SELECT * FROM tbl_a WHERE userId ='" & newUserId & "'"
If (dB.gRecordCount > 0) Then
MsgBox "new row:" & vbNewLine & "name: " & dB.rst.Fields("name") & vbTab & "date: " & dB.rst.Fields("date"), vbInformation, "test"
End If
'close database
dB.cloesDB
Else
'Process not valid
MsgBox "invalid"
End If
End Sub
امیدوارم مورد استفاده دوستان قرار گرفته باشه.
یکی از دوستان یه آموزش میخواست برای کار با یک پایگاه داده خارج از خود برنامه، که یه نمونه براش برنامه درست کردم که با کتابخانه dao هستش، اتچ می کنم شاید مورد استفاده دوستان قرار بگیره.
آموزش:
توی این فایلهای ارسال شده یک فایل بعنوان برنامه و یک برنامه بعنوان پایگاه داده هستش، در نمونه آدرس دهی بصورت مطلق است ولی میشه آدرس دهی رو طوری نوشت که قابل تغییر باشه و بشه از مسیرهای مختلف خوندش.
توی فایلی که بصورت برنامه هست یک کلاس نوشتم هرچند خیلی پیچیده نیست ولی خوبه و کار راه اندازه که کار اتصال به پایگاه داده که با رمز پروتکت شده رو انجام میده هر چند بدون رمز نیز میتونه باشه.
محتویات کلاس:
Public Function conectToDB(dbPath As String, Optional dbPassword As String) As Boolean
همونطور که از اسمش پیداست کار اتصال با پایگاه داده ات و دوتا ورودی داره که یکی آدرس فایل مورد نظر و دیگر رمز فایل است که در صورت نیاز وارد می شود، قبل ازهر کاری باید این عمل انجام شود.
روش استفاده :
اول باید یک اینستنس از کلاس میگیریم به این شکل
Dim dB As New dBA
که dBA همون نام کلاس هستش
رمزدار
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB", "123456789"
بدون رمز
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB", ""
' or
dB.conectToDB CurrentProject.Path & "\dB\data1.mdB"
فانکشن بعدی
Public Function setSql(StrSql As String) As Boolean
همونطور که از اسمش پیداست sql رو میگیره
به این صورت:
dB.setSql "SELECT MAX(userId) AS highest FROM tbl_a"
' or
dB.setSql "tbl_a"
' or
dB.setSql "SELECT * FROM tbl_a WHERE userId ='" & newUserId & "'"
برای این فانکشن یا متد هر نوع sql ای که قابلیت اجرا داشته باشه را میشه ارجاع داد
متد بعدی
Public Function isValidProcess() As Boolean
این متد چک میکنه که آیا پردازش قابل اجرا هست یا نه، به این صورت که وقتی یک sql ارجاع داده میشه اگر recordset با خطا مواجه باشه و ست نشده باشه false رو بر میگردونه
متد آخر این کلاس
Public Function gRecordCount() As String
اینم تعداد رکوردهای سلکت شده رو برمیگردونه هر چند اینو توی پردازش هم میشه گرفت
بعد از اینکه رکوردست ایجاد شد میتوان بقیه پردازش رو اعم از select, add,delete,update بوسیله dB.rst. پیگیری کرد
مانند کد زیر که وظیفه اففزودن یک مورد را بعهده میگیره:
'add new item
If (dB.isValidProcess) Then
dB.rst.AddNew
dB.rst.Fields("userId") = "sampleID"
dB.rst.Fields("name") = "That's User "
dB.rst.Fields("date") = Now
dB.rst.Update
'close database
dB.cloesDB
Else
'Process not valid
MsgBox "invalid"
End If
نمونه استفاده کامل از کد :
Option Compare Database
Private Sub Command0_Click()
'create instance of class
Dim dB As New dBA
Dim newUserId As String
newUserId = 0
'connect to database using custom params
dB.conectToDB CurrentProject.Path & "\dB\data.mdB", "8661645875"
'get highest value in userid field and sum +1
dB.setSql "SELECT MAX(userId) AS highest FROM tbl_a"
If IsNull(dB.rst.Fields("highest")) = False Then
newUserId = dB.rst.Fields("highest")
End If
newUserId = CInt(newUserId) + 1
'select a table
dB.setSql "tbl_a"
'add new item
If (dB.isValidProcess) Then
dB.rst.AddNew
dB.rst.Fields("userId") = newUserId
dB.rst.Fields("name") = "Tha's User " & newUserId
dB.rst.Fields("date") = Now
dB.rst.Update
'select last inserted data
dB.setSql "SELECT * FROM tbl_a WHERE userId ='" & newUserId & "'"
If (dB.gRecordCount > 0) Then
MsgBox "new row:" & vbNewLine & "name: " & dB.rst.Fields("name") & vbTab & "date: " & dB.rst.Fields("date"), vbInformation, "test"
End If
'close database
dB.cloesDB
Else
'Process not valid
MsgBox "invalid"
End If
End Sub
امیدوارم مورد استفاده دوستان قرار گرفته باشه.