سلام
اگر در برنامه با استفاده از ADODB.Connection اقدام به فراخوانی جداولی که در دیتابیس دیگری هست شود و در برنامه نیاز به کوئری باشد (بلحاظ لزوم ارتباط چند جدول) به چه طریقی باید عمل کرد؟
آیا در این حالت از دستور اسکیول باید استفاده کرد؟
سلام
اگر در برنامه با استفاده از ADODB.Connection اقدام به فراخوانی جداولی که در دیتابیس دیگری هست شود و در برنامه نیاز به کوئری باشد (بلحاظ لزوم ارتباط چند جدول) به چه طریقی باید عمل کرد؟
آیا در این حالت از دستور اسکیول باید استفاده کرد؟
یک ado.recordset بسازین و source اون رو هر دستور sql که مایل هستین بگذارین که میتونه از چند جدول join شده هم باشه:
dim conn as new adodb.connection
conn.connectionstring="...."
conn.open
dim rs as new adodb.connection
with rs
.activeconnection=conn
.source="SELECT ..."
.open
end with
با سلام خدمت استاد mazoolagh
ممنون از راهنمائیتون !
باید امتحان کنم
سوالی دیگر در همین رابطه !
استفاده از DLookup و Dcount در این حالت به چه صورتی است ؟
در ado به توابع درونی اکسس دسترسی ندارین (مثل همین توابع که اسم بردین)
باید براش تابع معادل بنویسین، یک چیزی شبیه زیر:
const sql as string="select first([@fld]) from [@tbl] where (@whr)"
function dlookup(fieldname as string , tablename as string , where as string) as variant
sql=replace(sql , "@fld" , fieldname)
sql=replace(sql , "@tbl" , tablename)
sql=replace(sql , "@whr" , where)
dim conn as new adodb.connection
conn.connectionstring="...."
dim rs as new adodb.recordset
rs.open sql , conn
if rs.eof then
dlookup=null
else
dlookup=rs(0)
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
end function
فقط باید error handling بهش اضافه کنین و احتمالا اگر از یک connection در تمام برنامه استفاده میکنین (برای پرهیز از باز و بسته کردن مداوم connection برای هر عملیات) یک تابع جدا برای باز کردن کانکشن مینویسین.
بسیار عالی
با سپاس فراوان