Vyprázdnění databáze   zodpovězená otázka

VB.NET, WinForms, Databáze

Dobrý den,

potřeboval bych poradit jak jednoduše ve VB vymazat všechny položky v databázi. Dělám to takto:

For i As Integer = BindingSource1.Count - 1 To 0 Step -1
    DataDS.Tables("Tabulka").Clear()
    BindingSource1.RemoveAt(i)
    TableAdapter1.Update(Me.DataSource)
Next

Je to ale pomalé a určitě existuje lepší způsob. Zkoušel jsem DataDS.Tables("Tabulka").Clear() ale bez úspěchu.

Předem děkuji za radu.

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

Obávám se, že takto pouze smažete položky. Pokud máte nastaven "autoincrement", tak při dalším vložení se nezačne od 1, ale bude pokračovat dalším číslem následujícím po původním posledním čísle. Na vymazání tabulky je příkaz

truncate table nazevtabulky

ale nevím, jak se dá použít ve VB.NET. Já mažu tabulky v SQL Management studiu...

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

Já SQL Management studio nepoužívám, nemám s tím zkušenosti. Mám databáze MS Access.

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

Můžete zkusit ten SQL příkaz použít přímo v tom Accessu, podle mě by to mohlo fungovat i tam...

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

Nemůžete mi poradit jak? S SQL nemám moc zkušeností a využívám v podstatě jen filtry, které zadám do BindigSource.Filter. Jak bych měl ve VB z WinForms předat tento příkaz databázi v Accessu?

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

Asi bych to zkusil přímo v tom souboru Accessu...

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

Potřebuji to vyprázdnit z aplikace ve WinForms.

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

a jak máte nastaveno připojení do DB?

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

K připojení využívám DataSource a Configiration Wizard, přičemž DB připojuji přes Database -> Dataset -> Microsoft Access Database File. A pak přes BindigSource.

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

zkuste se inspirovat tady

http://www.dotnetportal.cz/forum/tema/15...

jen do dotazu místo select zkuste dát to

truncate table nazevtabulky
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jak bych měl ve VB z WinForms předat tento příkaz databázi v Accessu?

Vymazání všech záznamů :

Dim cmd As New OleDbCommand("DELETE * FROM tablename", connection)
cmd.ExecuteNonQuery()

Odstranění celé tabulky pomocí SQL příkazu :

Dim cmd As New OleDbCommand("DROP TABLE tablename", connection)
cmd.ExecuteNonQuery()
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud uděláte "jen" DELETE a následně vložíte záznam, tak v případě, že máte nastaveno AUTO_INCREMENT na "IDčku", bude číslování pokračovat následujícím číslem (po původním posledním záznamu) a nikoliv od jedničky.

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

Ja mažem obsah tabuliek takto:

Pre každú tabulku vytvorim ďaľší TableAdapter

xy.TableAdapter.DeleteQ()

DELETE *

FROM xy

v programe zavolám príkaz xy.TableAdapter.DeleteQ

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

Něco takovýho jsem si představoval, ale nějak jsem to nepochopil. TableAdapter se mi vytvoří automaticky po přidání komponenty BindingSource, jen si podle potřeby přejmenuju. Tento TableAdapter ale žádné DeleteQ nemá, aspoň jsem nic takovýho nenašel.

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

DeleteQ je názov môjho ďaľšieho TableAdapteru (TA)

V návrhovom zobrazení

1. Otvoriť xyDataAdapter.xsd

2.Klik pravým na TA

3. Vybrať Add Query

4. Delete

5. čo vlastne chcem mazať

6. určím názov daľšieho TA

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

Díky za vysvětlení. Tohle jsem neznal a je to přesně to co jsem potřeboval. Zase jsem o něco chytřejší. :)

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

Ještě jednou dík. Předtím jsem se zapomněl přihlásit.

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