Data dvou databází do jednoho gridu   zodpovězená otázka

VB.NET, Databáze

Zdravím vespolek při pátečním poledni všechny zdejší profesionály. Prosím o radu s pro mě neřešitelným oříškem. Mám dvě databáze. Ke každé mám nachystán conectionstring v podobě:

MainCnStrServer As String = "Data Source=SERV2;Initial Catalog=SOWMAIN.MDF;Integrated Security=True; pooling=true"
ConfigCnStrServer As String = "Data Source=SERV2;Initial Catalog=SOWConfig.MDF;Integrated Security=True; pooling=true"

Promenne.MainCnStr = Promenne.MainCnStrServer
Promenne.ConfigCnStr = Promenne.ConfigCnStrServer

My.Settings.Item("SowMainConnectionString") = Promenne.MainCnStr
My.Settings.Item("SowConfigConnectionString") = Promenne.ConfigCnStr

Tyto následně připojuji a plním datagrid asi takto:

Dim sqlPrikaz1 As String
Dim dt As DataTable = New DataTable("Analyza") 
If SqldbconMain.State = ConnectionState.Closed Then SqldbconMain.Open()
 sqlPrikaz1 = ("SELECT *, sum(Hodiny) FROM DenniVykaz where ID_Zakazky=" + xy + " Group by mesic, rok, ID_Pracovnika")
strSql = New SqlCommand(sqlPrikaz1, SqldbconMain)
Dim ada As New SqlDataAdapter(strSql)
ada.Fill(dt)
DataGridAnalyzaZakazky.DataSource = dt
SqldbconMain.Close()

Umím spojit data dvou tabulek jedné databáze. Ale jak to prosím udělat ze dvou nebo tří souborů databází ?? Snažil jsem se hledat na netu, ale vastně nevím co hledám, jak ten algoritmus má vypadat ??

Díky moc za jakoukoli radu!!! Přeji pěkný den Radek !!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevím, jestli je to to co chcete, ale pokud máte dvě databáze na stejném SQL Serveru můžete psát SQL dotazy, které pracují s daty z obou těchto databází tj. můžete provádět JOIN apod. Dělá se to tak, že dotaz píšete proti jedné z těch db (tu také připojujete přes connection string) a na druhou se odkážete jejím jménem.

Nevýhodou je, že jméno druhé databáze je v SQL dotazu/uložené proceduře "natvrdo", hodí se to tedy pouze v případě, kdy se jméno db nikdy nezmění.

Př:

SELECT Objednavky.*, Osoby.CeleJmeno
  FROM Objednavky INNER JOIN
       DatabazeOsoby..Osoby ON Objednavky.IDOsoby = Osoby.IDOsoby

kde "DatabazeOsoby" je jméno té druhé db.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji podstatě je to.... ono tak jsem sesmolil dotaz, který se pokládá přes jednu conection následně:

 sqlPrikaz1 = "select Jmeno + ' ' + Prijmeni As 'Pracovník', Mesic, Rok, sum(Hodiny) As 'Odpracovaná doba' from DenniVykaz As TB1"
        sqlPrikaz1 += " inner join [SOWCONFIG.MDF].dbo.Users As Tb2 On  Tb1.ID_Pracovnika = Tb2.ID"
        sqlPrikaz1 += " where ID_Zakazky = " + CisloZak
        sqlPrikaz1 += "Group by TB1.Rok, Tb2.Jmeno, TB2.Prijmeni, TB1.Mesic"
        strSql = New SqlCommand(sqlPrikaz1, SqldbconMain)
        Dim ada As New SqlDataAdapter(strSql)
        ada.Fill(dt)
        DataGridAnalyzaZakazky.DataSource = dt

Polední neznámá je jak tam připojit ješte jednu databázi ???

ještě potřebuji například z databáze měsíců vytáhne jméno měsíce dle jeho pořadového čísla.

nebo název zakázky, který bude přiřazen dle jejího ID ???

Ještě jednou moc děkuji !!!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem jásal trochu předčasně. Vše uedený SQL mi funguje, když mám MSSQL na serveru.

Ale když ho provozuji lokálně, ta to nefunguje.

Když jsem tedy připojen k jedné databázi, jak prosím vytáhnu data z druhé??? Asi v rámci jednoho připojení??

Díky moc Radek !

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Co znamená, že to lokálně nefunguje?

Obecně podmínkou, aby se šlo v dotazu odkazovat na jinou db, je:

1) Databáze musí být na stejném MS SQL Serveru (stejné instanci)

2) Uživatel, kterým přistupujete do hlavní databáze, musí mít příslušná práva i na jiné odkazované db.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky chlapi MOC, už to běhá..... (špatně připojené DB k serveru)teď se pokusím ještě spojit tři ty DB a je to vše!! Díky, díky, díky !!!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback