Seznam tabulek MDB   zodpovězená otázka

VB.NET

Lze pomocí ADODB ve VB.NET 2010 zjistit, jaké tabulky jsou v accessovské databázi?

Návody využívající ADODB, které jsem našel zřejmě fungují pouze ve VB 6.

V řádku

AdoRS = AdoCon.OpenSchema(adSchemaTables)

hlásí chybu na "adSchemaTables"

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
Dim str As String = "Provider=Microsoft.jet.oledb.4.0;Data Source=c:\\northwind.mdb"
Dim conn As New OleDb.OleDbConnection
conn.ConnectionString = str
' Open a connection
conn.Open()
'Call GetOleDbSchemaTable
Dim schemaTable As DataTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, _
New Object() {Nothing, Nothing, Nothing, "TABLE"})
' Attach data row to the grid and close the connection
DataGrid1.DataSource = schemaTable
conn.Close()

http://www.dotnetheaven.com/article/gett...

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

Děkuji za nasměrování - doma vyzkouším.

Takže ke schematu MDB se dostanu (v .NET) nikoli přes ADODB, ale přes OleDB. Nebo to špatně chápu a OleDB je součástí ADODB?

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

Snad někdo opraví mé případné nepřesnosti...

ADODB je to ve vb6. OleDb je ekvivalent pro vb.Net.

Myslím, že oboje je součástí MDAC.

(Microsoft ActiveX Data Objects 2.x Library)

Ve vb.net asi lze přidat referenci ADODB a bude

se s tím pracovat úplně stejně, ale jak to bude

komunikovat s prvky ve formuláři, např. předávat

jako zdroj dat apod. Doporučuji Vám použít OleDb,

ačkoli budete za chvíli marně hledat Recordset. :)

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

No právě. Oživuji aplikaci která původně byla ve VB6 nově na PC s Win7 s MS Office 2010. Takže se to nyní snažím rozchodit nad VB 2010. Abych to nestavěl úplně znova, tak jsem převzal z VB6 ten ADODB. Recordset.ADODB vypadá že na .NAT jde, ale Schema Tabulek jsem už přes něj nedal.

Budu muset nastudovat jestli ADODB neopustit vůbec a nahradit ji celou OleDB.

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

Takže jsem to vyzkoušel. Mám to přesně takto:

 Public schemaTable As DataTable
 Public Sub OtevriMDB(kde, db)
        adoCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + kde + "\" + db
        adoCon.Open()
        schemaTable = adoCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})

    End Sub

Na řádku SchemaTable se program zastaví a vypíš chybu COMException was unhandled - Argumenty mají chybný typ, jsou mimo přípustný rozsah nebo vzájemně kolidují.

Nemůže to být že databáze je z Accessu ver 2.0 ?

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

Odpovím sám

Public adoCon As New ADODB.Connection 

mělo být nahrazeno

Public adoCon As New OleDb.OleDbConnection

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

Jak dostanu do ListBox jména tabulek z dříve získaného schemaTable?

V MDB je 12 tabulek.

"Listbox1.Dataset = schemaTable" vrací 12 řádků s textem System.Data.DataRowView

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

Je to takto:

 ListBox1.DataSource = schemaTable
 ListBox1.DisplayMember = "TABLE_NAME"

nahlásit spamnahlásit spam 1 / 1 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