PDA

View Full Version : سوال: استفاده از کوئری در حالت فراخوانی جداول از طریق کانکشن استرینگ



atf1379
سه شنبه 06 اسفند 1398, 20:23 عصر
سلام
اگر در برنامه با استفاده از ADODB.Connection اقدام به فراخوانی جداولی که در دیتابیس دیگری هست شود و در برنامه نیاز به کوئری باشد (بلحاظ لزوم ارتباط چند جدول) به چه طریقی باید عمل کرد؟
آیا در این حالت از دستور اسکیول باید استفاده کرد؟

mazoolagh
چهارشنبه 07 اسفند 1398, 10:24 صبح
یک 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

atf1379
چهارشنبه 07 اسفند 1398, 13:38 عصر
یک 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 (https://barnamenevis.org/member.php?9893-mazoolagh)
ممنون از راهنمائیتون !
باید امتحان کنم
سوالی دیگر در همین رابطه !
استفاده از DLookup و Dcount در این حالت به چه صورتی است ؟

mazoolagh
پنج شنبه 08 اسفند 1398, 16:00 عصر
در 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 برای هر عملیات) یک تابع جدا برای باز کردن کانکشن مینویسین.

atf1379
پنج شنبه 08 اسفند 1398, 18:43 عصر
بسیار عالی :تشویق::تشویق::تشویق:

با سپاس فراوان