Dataset, datagridview další form a vzájemné propojení dat   otázka

VB.NET, WinForms, Databáze

Prosím o radu nebo pomoc, používám VB.NET express, píšu jednoduchou aplikaci.

Ve VB.NET jsem vygeneroval přes wizard dataset (datadataset1.xsd), pak je na formuláři datagridview (dgw), který je s datasetem propojený. Nastavil jsem si viditelnost sloupců v dgw, jejich šířku atd... potud je všechno OK a data se zobrazují jak potřebuju.

Pak mám další formulář a na něm textboxy (jejich počet je stejný jako sloupců v databázi). Jde o to, že na tomto formuláři se budou po kliknutí na button zobrazovat všešchna data (něco jako detail příslušného řádku v databázi). Umím si přes index řádku v dgw načíst data do textboxů, ale přijde mi to trochu kostrbaté. A teď otázky:

Textboxy lze propojit s datasetem, není problém přímo nastavit jaké pole bude příslušný textbox zobrazovat. Jenže jak udělat, aby textboxy zobrazovaly ten řádek, na kterém se právě nachází kurzor v dgw? Tzn. listuju myší v dgw a po kliknutí na button se otevře form a zobrazí se data příslušného řádku. Lze to udělat propojením s datasetem a ne s dgw? Nebo se to dělá jinak?

Pokud něco v texboxech změním, jak udělat aby se mi to promítlo do dgw a hlavně se změny zapsaly i do databáze? Čili jak to udělat pokud budu dělat nový záznam, editovat existující záznam a mazat záznam? Dokázal bych to aktualizovat v dgw, ale jak to zapsat do příslušné databáze accdb?

Snad jsem to popsal srozumitelně :-)

Děkuji

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

Trochu dotaz zjednoduším...

Pomocí wizardu jsem propojil accdb a datasetem a datagridview. Všechno funguje. Když dataset zobrazím, v dolní části můžu pomocí "Add query..." přidat sql dotaz pojmenovaný FillAll.

SELECT * FROM Chemikálie ORDER BY Název ASC

Pak pomocí

Me.ChemikálieTableAdapter.FillAll(Me.DS1.Chemikálie)

naplním datagridview.

Potřeboval bych u složitějšího dotazu sql zadat některé parametry kódem. Vygeneroval jsem stejným postupem sql dotaz pojmenovaný třeba FillPodleTypu:

SELECT * FROM Chemikálie
WHERE Typ = '@par1')
ORDER BY Název

Vygooglil jsem tento postup:

Me.ChemikálieTableAdapter.FillPodleTypu(Me.DS1.Chemikálie,"hodnota")

ale hlásí mi to chybu, že je moc parametrů.

Dotaz:

1) jak kódem zadat hodnotu @par1 třeba podle obsahu texboxu

2) jak naplnit datagridview podle výsledku sql příkazu

Moc děkuji

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

ad 1) hodnotu podle obsahu textboxu zadáte "textbox1.text"

ad 2) datagridview naplníte metodou fill (když budete hledat, najdete v tomto diskusním fóru několik příkladů...


Private da As OleDbDataAdapter
Private dt As DataTable = New DataTable     'tabulka s daty v paměti
'oledbcon je připojení k databázi
'Výběr dat z DB
        Dim strQuery As String = "SELECT * from tabulka"
        da = New OleDbDataAdapter(strQuery, oledbcon)
        da.Fill(dt)
        'nastavit DataTable jako zdroj dat
        dgv.DataSource = dt
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