PDA

View Full Version : سوال: اتصال (GOIN) دو یا چند جدول از دیتابیس دیگر



atf1379
یک شنبه 31 فروردین 1399, 15:41 عصر
سلام
در این نمونه (http://s10.picofile.com/file/8394537142/GoinTabels.rar.html) در دیتابیس BE.accdb دو جدول وجود دارد . میخواهم این دو جدول از این دیتابیس که رمز ورود آن هم 123 است را به هم جوین و حاصل را در Me.RecordSource فرم دیتابیس FE.accdb قرار بدهم
از دوتا کد اسکیوئل استفاده کرده اما جواب نگرفتم
اساتید لطفاً بررسی فرمایند ایراد از کجاست
با تشکر

mazoolagh
دوشنبه 01 اردیبهشت 1399, 10:10 صبح
1- رفرنس هایی که اضافه کردین هیچکدوم لازم نیست، حذف کنید

2- پسورد رو باید در کانکشن بیارین ، نه در کوئری - در کوئری فقط جدول و بعضی توابع

mazoolagh
دوشنبه 01 اردیبهشت 1399, 10:13 صبح
Option Compare Database
Option Explicit
Const SQL = "SELECT T2.ID, T1.LastName, T1.FirstName, T1.Gender, T2.H " & _
"FROM Table1 T1 " & _
"INNER JOIN Table2 T2 " & _
"ON T1.ID = T2.ID"
Private Sub Form_Open(Cancel As Integer)
With DBEngine.OpenDatabase(CurrentProject.Path & "\be.accdb", False, False, ";pwd=123")
Set Me.Recordset = .OpenRecordset(SQL)
End With
End Sub
Private Sub cmdQuit_Click()
Application.Quit
End Sub

mazoolagh
دوشنبه 01 اردیبهشت 1399, 10:21 صبح
برنامه اصلاح شده:

atf1379
دوشنبه 01 اردیبهشت 1399, 12:50 عصر
برنامه اصلاح شده:
احسنت ! :تشویق::تشویق::تشویق:

atf1379
سه شنبه 02 اردیبهشت 1399, 07:10 صبح
باتشکر فراوان از استاد mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
سوالی دیگر درهمین رابطه :
با توجه به تجربیاتی که تا کنون داشته اید شما استفاده ازکدام متد Ado یا Dao را در چنین حالتی که جداول در دیتابیس دیگری است ترجیح میدهین
من شخصاً با توجه به تجربیات اندک قبلی و راهنمائیهای خوب شما متوجه سرعت انتقال اطلاعات با استفاده از متد Daoشده ام.و احساس کند عمل کردن Ado بخصوص زمان استفاده از ADODB.Recordset برای ورود اطلاعات به لیست باکس ازطریق زیر دارم
با تشکر



Dim rst As New ADODB.Recordset
With rst
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
.Open sql, CurrentProject.Connection
Set .ActiveConnection = Nothing
End With
Set Me.LISTBOX.Recordset = rst
Set rst = Nothing

mazoolagh
سه شنبه 02 اردیبهشت 1399, 11:02 صبح
برای پرسش آخر یک تاپیک جدا بزنین

atf1379
شنبه 20 اردیبهشت 1399, 01:40 صبح
Option Compare Database
Option Explicit
Const SQL = "SELECT T2.ID, T1.LastName, T1.FirstName, T1.Gender, T2.H " & _
"FROM Table1 T1 " & _
"INNER JOIN Table2 T2 " & _
"ON T1.ID = T2.ID"
Private Sub Form_Open(Cancel As Integer)
With DBEngine.OpenDatabase(CurrentProject.Path & "\be.accdb", False, False, ";pwd=123")
Set Me.Recordset = .OpenRecordset(SQL)
End With
End Sub
Private Sub cmdQuit_Click()
Application.Quit
End Sub



سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
در این کدها جدول های با نام t1 و t2 درج شده که در دیتابیس وجود ندارد با این وجود ارتباط هم برقرار است
آیا T1 و T2 نام هایی اختصاری برای table1 و table2 است ؟

mazoolagh
شنبه 20 اردیبهشت 1399, 11:14 صبح
در select (و دیگر دستورهای sql) میتونیم برای راحتی و دوری از اسم های بزرگ یا خوانایی بیشتر کد، یک اسم دیگه به جدول اختصاص بدیم که به اون alias میگن.

در اینجا هم t1,t2 بعنوان alias برای table1,table2 بکار رفته.

البته مواردی هم هست که استفاده از alias اجباری است.

vivapersian@hotmail.com
سه شنبه 23 اردیبهشت 1399, 22:37 عصر
سلام این کد برای اتصال به بانک sql هم کاربرد داره؟؟؟



Option Compare Database
Option Explicit
Const SQL = "SELECT T2.ID, T1.LastName, T1.FirstName, T1.Gender, T2.H " & _
"FROM Table1 T1 " & _
"INNER JOIN Table2 T2 " & _
"ON T1.ID = T2.ID"
Private Sub Form_Open(Cancel As Integer)
With DBEngine.OpenDatabase(CurrentProject.Path & "\be.accdb", False, False, ";pwd=123")
Set Me.Recordset = .OpenRecordset(SQL)
End With
End Sub
Private Sub cmdQuit_Click()
Application.Quit
End Sub

mazoolagh
چهارشنبه 24 اردیبهشت 1399, 11:18 صبح
در تاپیک زیر نمونه کد کاربردی هست که میتونین عینا استفاده کنین یا ازش ایده بگیرین:

https://barnamenevis.org/showthread.php?560748-مفهوم-صحیح-اتصال-به-بانک-اطلاعاتی-sql-server-و-بستن-رکوردستها