نمایش نتایج 1 تا 33 از 33

نام تاپیک: پایگاه داده در ویژوال بیسیک - شروع تا پایان

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    Lightbulb بازيابي اطلاعات از منابع - با استفاده از Connection

    براي بازيابي اطلاعات يك جدول از پايگاه داده ميشه از خود شي Connection استفاده كرد. شي Connection يك متدي رو در اختيار ما قرار مي ده به اسم Execute كه از اسمش پيداست يعني اجرا كن. اين متد از ما يك دستوري رو براي بازيابي اطلاعات مي خواد كه مي شه از Store Procedure ها هم در اينجا استفاده كرد.
    با اين دستور هم ميشه از Recordset استفاده كرد هم استفاده نكرد. همون طور كه مي دونيد Recordset يك حافظه Forward Only هستش يعني روبه جلو كه در خودش يك مجموعه ركورد رو ذخيره مي كنه.
    شكل كلي كار به اين صورت هستش:

    Set Rst = Conn.Execute (SQLStatment, Recordaffected, Option)

    Recordaffected يك آرگومان اختياري هستش كه فكر مي كنم اكثر شما وقتي در داخل نرم افزار بانك اطلاعاتي كه باهاش يك Query اجرا مي كنيد (Access, SQL Server,...) ديده باشيد كه تعداد ركوردهاي درگير شده از اون دستور SQL رو به شما مي ده.
    آرگومان Option مشخص مي كنه كه شما چگونه مي خواين اطلاعات رو بازيابي كنيد. درواقع همون CommandType در شي Command هستش با كمي تغييرات.

    و اگر از Recordset هم استفاده نكرديد هيچ ايرادي نداره:

    Conn.Execute SQLStatment, Recordaffected, Option


    يك مثال:

    Public Sub LoadAll_1()
    Set Conn = New ADODB.Connection
    Set Rst = New ADODB.Recordset

    Conn.Provider = "Microsoft.JET.OLEDB.4.0"
    Conn.ConnectionString = App.Path + "\Data Base\Test.mdb"
    Conn.CursorLocation = adUseClient
    Conn.Open

    SQLQuery = "Select * From tblTest"
    Set Rst = Conn.Execute(SQLQuery, , adCmdText)

    Set frmMain.DataGrid1.DataSource = Rst
    frmMain.DataGrid1.Refresh
    End Sub

  2. #2

    Lightbulb بازيابي اطلاعات از منابع - با استفاده از Command

    شي Command كارش اجرا كردن فرامين SQL يا اجرا كردن روال هاي ذخيره شده (S.P) هستش. در كل براي انجام هر كاري استفاده از اين روش توصيه ميشه چون

    1. بر اساس يك الگوريتم كار مي كنه
    2. منظم هستش
    3. خواناي بالايي داره

    با شي Command در پست هاي قبلي آشنا شديم و توضيح اضافه اي رو نمي دم.
    مثال:

    Public Sub LoadAll_2()
    Set Conn = New ADODB.Connection
    Set Cmd = New ADODB.Command
    Set Rst = New ADODB.Recordset

    Conn.Provider = "Microsoft.JET.OLEDB.4.0"
    Conn.ConnectionString = App.Path + "\Data Base\Test.mdb"
    Conn.CursorLocation = adUseClient
    Conn.Open

    SQLQuery = "Select * From tblTest"

    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdText
    Cmd.CommandText = SQLQuery

    Rst.CursorType = adOpenKeyset
    Rst.CursorLocation = adUseClient
    Set Rst = Cmd.Execute

    Set frmMain.DataGrid1.DataSource = Rst
    frmMain.DataGrid1.Refresh


  3. #3

    بازيابي اطلاعات از منابع - با استفاده از Recordset

    بعضي ها هم دوست دارن كه مستقيم Recordset خودشون رو Open كنن و اونجوري اطلاعات رو بازيابي كنن:

    Public Sub LoadAll_3()
    Set Conn = New ADODB.Connection
    Set Rst = New ADODB.Recordset

    Conn.Provider = "Microsoft.JET.OLEDB.4.0"
    Conn.ConnectionString = App.Path + "\Data Base\Test.mdb"
    Conn.CursorLocation = adUseClient
    Conn.Open

    SQLQuery = "Select * From tblTest"

    Rst.ActiveConnection = Conn
    Rst.CursorType = adOpenKeyset
    Rst.CursorLocation = adUseClient
    Rst.Open SQLQuery

    Set frmMain.DataGrid1.DataSource = Rst
    frmMain.DataGrid1.Refresh
    End Sub


  4. #4

    Lightbulb متد Connect

    حال براي اينكه از نوشتن كد هاي اضافي پرهيز كنم ميام يك روال به اسم Connect مي سازم كه كارش اتصال و باز كردن بانك اطلاعاتي هستش و در هر جا كه خواستم ازش استفاده مي كنم:

    Public Conn As ADODB.Connection
    .
    .
    .
    Public Sub Connect()
    Set Conn = New ADODB.Connection

    Conn.Provider = "Microsoft.JET.OLEDB.4.0"
    Conn.ConnectionString = App.Path + "\Data Base\Test.mdb"
    Conn.CursorLocation = adUseClient
    Conn.Open
    End Sub

  5. #5

    Lightbulb متد LoadAll

    در اين پست و اين پست و اين پست با نحوه بازيابي اطلاعات يك جدول آشنا شديم. هر سه روش يك كار رو انجام مي دن اما من از روش دوم يعني استفاده از Command رو پيشنهاد مي كنم. عرض كردم كه هيچ فرقي نمي كنه شما مي تونيد يك برنامه پايگاه داده رو به روش ها و شكل هاي مختلفي بنويسيد.
    متد LoadAll من به اين شكل خواهد بود:

    Public Sub LoadAll()
    Set Cmd = New ADODB.Command
    Set Rst = New ADODB.Recordset

    Connect

    SQLQuery = "Select * From tblTest"

    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdText
    Cmd.CommandText = SQLQuery

    Rst.CursorType = adOpenKeyset
    Rst.CursorLocation = adUseClient
    Set Rst = Cmd.Execute

    Set frmMain.DataGrid1.DataSource = Rst
    frmMain.DataGrid1.Refresh
    End Sub

    من از اين روش براي درج، حذف و ويرايش نيز استفاده خواهم كرد.

  6. #6

    Lightbulb متد Insert

    اين متد كارش درج كردن يك ركورد در يك جدول هستش. همچنين براي ارسال Parameters از اين روش استفاده شده:

    Public Sub Insert(ByRef َArgum...)
    Set Cmd = New ADODB.Command
    Set Rst = New ADODB.Recordset

    Connect

    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdText
    Cmd.CommandText = "Insert Into tblTest (Field1)Values(@Field1)"
    Cmd.Parameters.Refresh
    Cmd.Parameters.Item(0).Value = Argum...

    Rst.CursorType = adOpenKeyset
    Rst.CursorLocation = adUseClient
    Set Rst = Cmd.Execute
    End Sub


  7. #7

    Lightbulb متد Delete

    كار اين روال حذف يك ركورد هستش. براي ارسال Parameters از اين روش استفاده كردم:

    Public Sub Delete(ByRef NumericValue As Integer, and more....)
    Set Cmd = New ADODB.Command
    Set Rst = New ADODB.Recordset
    Set Param = New ADODB.Parameter

    Connect

    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdText
    Cmd.CommandText = "Delete From tblTest WHERE NumericField=@NumericField"
    Cmd.Parameters.Refresh
    Cmd.Parameters("@NumericField").Value = NumericValue

    Rst.CursorType = adOpenKeyset
    Rst.CursorLocation = adUseClient
    Set Rst = Cmd.Execute
    End Sub


  8. #8

    Lightbulb متد Update

    اين روال كارش ويرايش كردن يك ركورد هستش. براي ارسال Parameters از اين روش استفاده شده:

    Public Sub Update(ByRef strArgum As String, ByRef NumericField As Integer,....)
    Set Cmd = New ADODB.Command
    Set Rst1 = New ADODB.Recordset
    Set Rst2 = New ADODB.Recordset

    Connect

    Cmd.ActiveConnection = Conn
    Cmd.CommandType = adCmdText
    Cmd.CommandText = "Update tblTest SET Field1=@Field1 WHERE NumericField=@NumericField"

    Set Parameters1 = Cmd.CreateParameter("@Field1", adInteger, adParamInput)
    Cmd.Parameters.Append Parameters1
    Set Parameters2 = Cmd.CreateParameter("@NumericField", adInteger, adParamInput)
    Cmd.Parameters.Append Parameters2


    Set Rst = Cmd.Execute(, Array(strArgum, NumericField))
    End Sub


برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •