روش سوم- استفاده از ADODB.parameter:
اين روش درواقع يه جورهايي به دو روش قبلي مربوط ميشه يعني ADODB.Command اما به
طور غير مستقيم. يكم اين روش نياز به دقت داره وگرنه سخت نيست. اول بايد ببينيم كه دستور SQL مورد نظر ما چند تا Parameters نياز داره و به همون تعداد متغير از نوع ADODB.Parameter تعريف مي كنيم. به عنوان مثال من مي خوام يك دستور Update رو بنويسم و اين دستور من حداقل دو تا parameters نياز داره:
کد:Public Parameters1 As ADODB.Parameter Public Parameters2 As ADODB.Parameter
حالا دستور مورد نظر رو مي نويسيم. مثلاً:
کد:Cmd.CommandType = adCmdText Cmd.CommandText = "Update tblTest SET Field1=@Field1 WHERE Field2=@Field2"
حالا بايد parameters رو به متغيرمون Set كنيم:
کد:Set Parameters1 = Cmd.CreateParameter("@Field1", adInteger, adParamInput) Set Parameters2 = Cmd.CreateParameter("@Field2", adInteger, adParamInput)
حالا دوباره بر مي گرديم سراغ ADODB.Command و از خاصيت Parameters اون دوباره استفاده مي كنيم با اين تفوت كه از متد Append اون استفاده مي كنيم:
کد:Cmd.Parameters.Append Parameters1 Cmd.Parameters.Append Parameters2
مقداردهي Parameters هاي ساخته شده:
اما حالا نوبت به مقدار دهي Parameters ميشه. از تابع Array كه همه باهاش آشنايي دارن استفاده كنيم.
کد:Set Rst = Cmd.Execute(, Array(Value1, Value2))
به طور مستقيم اينجا مقادير رو وارد Cmd.Execute مي كنيم. درواقع شكل كلي دستور به اين صورت هستش:
کد:Cmd.Execute (RecordAffected,Parameters,Option As Long=-1)
كه هر سه آرگومام اختياري هستن.
کد:Cmd.CommandType = adCmdText Cmd.CommandText = "Update tblTest SET Field1=@Field1 WHERE Field2=@Field2" Set Parameters1 = Cmd.CreateParameter("@Age", adInteger, adParamInput) Cmd.Parameters.Append Parameters1 Set Parameters2 = Cmd.CreateParameter("@Code", adInteger, adParamInput) Cmd.Parameters.Append Parameters2 . . . Set Rst = Cmd.Execute(, Array(Value1, Value2))