I have three MS-Access files with different paths. How can I query multiple with dapper from list/model to datagridview.
Please Guide Me.
Thanks
Info path from MS-ACCESS files
TABLEA = D:\TABLEA.accdb
TABLEB = Z:\DATA\Malfin 07\TABLEB.accdb
TABLEC = Z:\DATA\Malfin D2\TABLEC.accdb
Public Class Form1
Public Function GetOledbConnectionString() As String
Return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=;Persist Security Info=False;"
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using conn = New OleDbConnection(GetOledbConnectionString)
Using data = conn.QueryMultiple("select * from User", Nothing)
End Using
End Using
End Sub
End Class
Public Class User
Public Property ID() As Integer
Public Property FIRSTNAME() As String
Public Property LASTNAME() As String
End Class
TABLEA
Table Name : User
ID | FIRSTNAME | LASTNAME |
---|---|---|
1 | TEST1000 | 1000TEST |
2 | TEST2000 | 2000TEST |
TABLEB
Table Name : User
ID | FIRSTNAME | LASTNAME |
---|---|---|
1 | TEST3000 | 3000TEST |
2 | TEST4000 | 4000TEST |
TABLEC
Table Name : User
ID | FIRSTNAME | LASTNAME |
---|---|---|
1 | TEST5000 | 5000TEST |
2 | TEST6000 | 6000TEST |
Desired Result in datagridview
FIRSTNAME | LASTNAME |
---|---|
TEST1000 | 1000TEST |
TEST2000 | 2000TEST |
TEST3000 | 3000TEST |
TEST4000 | 4000TEST |
TEST5000 | 5000TEST |
TEST6000 | 6000TEST |
I don't think QueryMultiple works in this way.
Either create three results set and UNION or Concat them:
CONST constrA = "..."
CONST constrB = "..."
CONST constrC = "..."
FUNCTION GetUsers(constr AS STRING) AS IENUMERABLE(OF User)
USING con AS oledbconnection = NEW oledbconnection(constr)
RETURN con.query(OF User)("SELECT * FROM [User]")
END USING
END FUNCTION
SUB FORM_LOAD
users_datagridview.datasource = GetUsers(constrA).UNION(GetUsers(constrB)).UNION(GetUsers(constrC)).TOLIST
END SUB
or add tables from B and C database to the A database as a linked-table so you can union them in a single query:
CONST constrA = "..."
FUNCTION GetAllUsers() AS IENUMERABLE(OF User)
USING con As oledbconnection = NEW oledbconnection(constrA)
RETURN con.query(OF User)("(SELECT * FROM [User]) UNION (SELECT * FROM User_B) UNION (SELECT * FROM User_C)")
END USING
END FUNCTION
SUB FORM_LOAD
users_datagridview.datasource = GetAllUsers.TOLIST
END SUB