Datagridview   zodpovězená otázka

VB.NET, WinForms, Databáze

Zdravím. Ve formuláři mám datagrid. V okně "Server Explorer" nastavím připojení na mySQL databázi. Kontrolní připojení proběhne v pořádku. V okně "Data sources" nastavím dataset včetně SQL dotazu. Napojím dataset na datagrid - vlastnost "DataSource". Spustím program v debug módu, vyskočí tohle:

* Error 1 Type 'Kravosoft.Adresy' is not defined.

* Error 2 Type 'Kravosoft.AdresyTableAdapters.DataTable1TableAdapter' is not defined.

Pokud nechám debuger chybu ignorovat a program spustím, data do datagridu se načtou v pořádku. Co dělám špatně ? Díky za odpověď.

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

Napadá mě jestli tu chybu nehází db engine? Zkuste ho updatovat.

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

DB engine to nebude, chybu hází Visual Studio při pokusu zkompilovat a spustit program (ještě před jeho vlastním spuštěním).

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

Pokud se data zobrazí, já bych viděl chybu na straně ovladače, který se napojuje na databázi. Při kompilování si vb ověřují reference na objekt a pokud něco není v pořádku např. parametr tak můžou vyhodit tuto chybu, která však nemusí být zásadní a proto se data načtou. I VS musí používat pro přítup k datům něco jako MYSQL driver nebo ODBC.

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

Ještě mě napadá to, že při nastavování datasetu ve Visual Studiu se při definování zdroje dat nenačtou názvy jednotlivých tabulek v příslušné mySQL databázi. Každopádně mi tenhle fakt docela komplikuje práci, seznam chyb brzo bude docela obsáhlý a bude těžké se v tom zorientovat. Ovladače pro přístup k databázi jsou originální - MySQL Connector/ODBC 5.1. Jediným řešením bude asi nastavit dataset za běhu programu (Load formuláře).


Dim dataSet As New DataSet

Nadefinovat dataset za běhu programu jsem zkoušel, zřejmě nemám nastavenou správně příslušnou referenci ve Visual Studiu. Co potřebuju k tomu, abych definoval dataset za běhu programu ?

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

Ukázka je pro mdb databázi:

        Dim sqlConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\databaze.mdb;Jet OLEDB:Database Password=;") ' inicializace objektu spojení na databázi
        Dim sqlCommand As New OleDbCommand("SELECT * FROM Ad", sqlConnection) ' vytvoření dotazu a předání připojení

        Dim objDataAdapter As New OleDbDataAdapter(sqlCommand)
        Dim DS As New DataSet

        objDataAdapter.Fill(DS, "Ad")

        sqlConnection.Open() ' pomocí dat z ConnectionStringu spojení otevřeš


        datagridview1.AutoGenerateColumns = True
        datagridview1.DataSource = DS.Tables("Ad")

takže stačí změnit jenom provider pro MySQl databázi (samozřejmě musíš mít nainstalovaný db driver, na který se v providerovi navážeš (v mém případě je to Microsoft.Jet.OLEDB.4.0)

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Díky. Už to jede...

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

"Adresy" = název datasetu

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