Problém s aktualizací dat v accdb pomocí VB.NET   otázka

ADO.NET, Databáze, VB6/VBA

Prosím o pomoc, mám databázi accdb, pomocí wizardu propojenou na formuláři s datagridview. Čili mám "dataset" DS1 "bindingsource" a "tableadapter". V tableadapteru mám i saru různých sql dotazů, mimo jiné i tento, dostupný jako xxx_tableadapter.DeleteQuery

DELETE FROM Chemikálie WHERE (ID = par1)

když provedu kód

'odeslání parametru do sql příkazu
Me.ChemikálieTableAdapter.DeleteQuery(My.Settings.IDzaznamu)
'zápis do accdb...ale nefunguje
Me.ChemikálieBindingSource.EndEdit()
Me.ChemikálieTableAdapter.Update(Me.DS1)
'naplnění datagridview výsledkem sql
Me.ChemikálieTableAdapter.Fill(Me.DS1.Chemikálie)

tak z datagridview smazaný záznam skutečně zmizí, ale když spustím program znovu, je tam "smazaný" záznam opět, tzn. že se nesmazal v accdb databázi.

Poraďte prosím jak to má být správně, aby se provedl sql příkaz i v databázi?

Moc děkuji

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

Pouštíte program z Visual studia, nebo ho už máte zkompilovaný a nainstalovaný?

Když jsem svůj prográmek spouštěl jako debug z VS (databázi jsem měl zkopírovanou do projektu), měl jsem stejný problém, ale po ostrém nasazení to bylo OK. Když jsem DB nekopíroval do projektu, ale měl jsem ji mimo adresář, aplikace se chovala tak jak má...

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

Tak to skutečně pomohlo, nastavil jsem "Do not copy" a už to funguje jak má. Akorát nechápu proč to tak je...?

V té souvislosti mně napdá, když mám v settings automaticky vygenerovaný connection string:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Data.accdb;Persist Security Info=True;Jet OLEDB:Database Password=xxxx

tak co přesně znamená to Source=|DataDirectory| a když budu aplikaci publikovat (generovat setup), tak tu databázi musím někam přidat ručně? Pokud ano tak kam?

Jde mi o to, že pokud program v takto postaveném connection stringu databázi nenajde, tak co se stane? Zhavaruje? Jak to ošetřit abych mohl třeba cestu k databázi nastavit ručně?

Děkuji

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

|DataDirectory| je adresář aplikace, takže pokud je to takto nastaveno, bude aplikace vyžadovat, aby databáze byla v kořenovém adresáři, což není zrovna praktické (vyzkoušeno v praxi). Aplikace se většinou instaluje do Program Files, kde není automaticky povoleno zapisovat, takže při prvním pokusu u zápis do DB zhavaruje. Databázi je lepší dávat do Program Data (ve WIN7), ale protože každý systém je má jinde dává se tam "relativní cesta"

např. já používám ConnectionString v modulu, abych to nemusel v každém formu vypisovat znovu, případně měnit na mnoha místech...

Module Module1
    Public PwdCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & "\NazevAplikace\Data.accdb"
    Public oledbcon As New OleDbConnection(PwdCon)
End Module

Já používám VB2008Express, ale důležité je to

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) & "\NazevAplikace\Data.accdb"
nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Tohle je mi jasné a děkuji.

Nicméně wizard automaticky vygeneroval connestionstring do Myprojects - settings. Jenže nikde nemůžu najít kód, který by se na tento connectionstring odkazoval, abych jej mohl změnit dle předchozího příspěvku.

Resp. jak to udělat abych nahradil automaticky vygenerovaný connectstring...?

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

Connectionstring by měl jít normálně přepsat...

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