Jump to content
GSForum - Segélyvonal

Visual Basic - 1 lekérdezés 2 különbözõ adatbásisból


Recommended Posts

thermomixer
Posted

Sziasztok!

 

Kezdõ Visual Studio 2008 felhasználó vagyok és a következõ problémába ütköztem:

három különbözõ adatbázisból kell lekérdeznem adatokat, úgy, hogy egy rekordnak akár mind a 3 különbözõ adatbázisban vannak adatai.

Konkrétan: adatbázis1-ben találhatók a termék tulajdonságai(termékkód, terméknév, stb), adatbázis2-ben találhatóak a termék beszerzési adatai (termékkód, beszerzési ár, stb.)

Nekem olyan lekérdezés kell, amelyben lekérem a termék kódját, nevét, beszerzési árát, vagyis két táblát kell kapcsolnom, amelyek nem azonos adatbázisban találhatóak.

 

Így próbálkoztam:

Egy meglévõ DataGridView DataSet-jén jobb klikk-> Edit DataSet Designer.

Itt találhatóak a tábláim az egyik adatbázisból. A táblák alatti területen jobb klikk -> Add Table Adapter.

Ennek a táblának beállítottam úgy a tulajdonságait, hogy egy a másik adatbázisban található adattábla mezõi jelenjenek meg. Így itt találhatóak (a Dataset Designerben) az adatbázis1 adattábla1 és az adatbázis2 adattábla1 táblái, amelyeket össze is kötöttem a tételkóddal. Innentõl viszont már nem tudom, hogyan írjam meg a lekérdezésemet. A táblák alatti részen jobb klikk-> Add Query / Add Table Adapter, stb.t kipróbáltam, de sehol nem találtam lehetõséget arra, hogy ezen két tábla adatait egy lekérdezésben lekérjem.

 

Másik dolog, ettõl függetlenül próbálkoztam ConnectionStringgel, de a fordító hibásnak találja a String paramétereit:

 

Private m_cnADONetConnection As New OleDb.OleDbConnection

 

m_cnADONetConnection.ConnectionString = _ "Provider=SQLOLEDB;Dsn=elesq;host=server;port=elesq-sv;db=eles_q;uid=dbname;pwd=xxx"

connection.Open()

 

Elõre is köszönöm a segítõ válaszokat!

 

Thermo

 

 

 

 

 

Posted

Szia!

 

Munkám során használok én is olyan lekérdezést, amely több MSSQL adatbázisból olvas adatokat, de ezt az ADATBAZIS.dbo.TABLANEV séma használatával meg tudod oldani egy lekérdezésen belül. Pl:

 

SELECT t1.*,t2.* FROM ADATBAZIS1.dbo.TABLA t1

INNER JOIN ADATBAZIS2.dbo.TABLA t2 ON(t2.OSZLOP=t1.OSZLOP)....

 

Üdv.: MOHI.

thermomixer
Posted

Szia!

 

Ezt már próbáltam, mielõtt még ide írtam volna, de most hogy írtál, megpróbáltam sokféle változatban beírni a query builderbe, majd végül erre egyszerûsítettem:

 

SELECT *

FROM eles_q.dbo.pt_mstr

illetve

SELECT *

FROM eles_q.pub.pt_mstr

 

egyik sem jó, ezt fogadja el:

 

SELECT *

FROM pub.pt_mstr

 

Ahogy már írtam, a dataset.xsd-n kattintok jobb gombbal, és itt add->table adapter-t adok hozzá. Ezzel a módszerrel csak egy adatbázisba nyúlhatok bele, szóval vszínûleg nem jó a módszerem.

Kísérlet képpen azért megpróbáltam adatbázis2 tábla1 mezõit lekérni, habár adatbázis1hez csatlakoztam a tableadapterrel, természetesen nem ment.

Viszont a dataset.xsd-n létrehozhatok egy tableadapter1-et, amely tartalmazza adatbázis1 tábla1 tábláját és egy tableadapter2-t, amely tartalmazza adatbázis2 tábla2 tábláját, ezek grafikusan összeköthetõek, de lekérdezést nem tok rá írni.

 

  • 1 month later...
thermomixer
Posted

Sziasztok!

 

Az alap probléma az, hogy van két külön adatbázisom. Az egyikben van egy adattábla (pt_mstr), amely a termék alapadatait tartalmazza. A másik adatbázisban található dlot_mstr adattábla, amely a termék beszerzési árát tartalmazza. A két táblát pt_part, vagyis a termékkód köti össze. A két tábla adatait VB-s adattáblákba töltöm, de innen nem tudom, hogyan tovább. A datarelation-os részig minden működik, data relation nélkül meg tudom jeleníteni az adatokat egy gridben, tehát az adatbázissal való kapcsolat jó, már csak az a kérdés, hogyan kell a VB-s adattáblákat összekötni egymással. A könyv szerint a datarelation datasettel épp erre való, de nekem nem működik, "Object reference not set to an instance of an object" hibaüzit kapom abban a sorban, melyben ptColumn-nak értéket adok(félkövérrel a kódban). Tudnátok segíteni?

 

Dani

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim conn_q As New Odbc.OdbcConnection
        Dim conn_s As New Odbc.OdbcConnection
        Dim pt_mstr_dataAdapter As Odbc.OdbcDataAdapter
        Dim pt_mstr_Datatable As New DataTable
        Dim dlot_mstr_dataAdapter As Odbc.OdbcDataAdapter
        Dim dlot_mstr_Datatable As New DataTable
        Dim DataSet11 As New DataSet()
      
     
        conn_q.ConnectionString = "DSN=elesq;DB=eles_q;UID=s;PWD=x;HOST=x;PORT = elesq-sv"
        conn_s.ConnectionString = "DSN=elesq;DB=eles_s;UID=s;PWD=x;HOST=x;PORT = eless-sv"
      
        Dim cmd_q As New Odbc.OdbcCommand
        Dim cmd_s As New Odbc.OdbcCommand

        cmd_q.Connection = conn_q
        cmd_s.Connection = conn_s

        cmd_q.CommandText = "select PUB.pt_mstr.pt_part from  PUB.pt_mstr"
        cmd_s.CommandText = "select PUB.dlot_mstr.dlot_part from PUB.dlot_mstr"
        Try
            conn_q.Open()
            conn_s.Open()
            pt_mstr_dataAdapter = New Odbc.OdbcDataAdapter(cmd_q)
            dlot_mstr_dataAdapter = New Odbc.OdbcDataAdapter(cmd_s)
            'commandBuilder = New SqlCommandBuilder(ugyfelek_dataAdapter)
        Catch ex As Exception
            MsgBox(ex.Message)
            Exit Sub
        End Try
       

        pt_mstr_dataAdapter.Fill(pt_mstr_Datatable)
        dlot_mstr_dataAdapter.Fill(dlot_mstr_Datatable)

        DataSet11.Clear()
        pt_mstr_dataAdapter.Fill(DataSet11)
        dlot_mstr_dataAdapter.Fill(DataSet11)

        Dim ptColumn As New DataColumn()
        Dim dlotColumn As New DataColumn()

            ptColumn = DataSet11.Tables("pt_mstr").Columns("pt_part")
        dlotColumn = DataSet11.Tables("dlot_mstr").Columns("dlot_part")

        Dim kapcsolat As DataRelation
        kapcsolat = New DataRelation("kapcsolat", ptColumn, dlotColumn)
        DataSet11.Relations.Add(kapcsolat)



        Me.DataGridView1.DataSource = DataSet11
        'Me.DataGridView1.DataSource = pt_mstr_Datatable
        conn_q.Close()


    End Sub

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...