Databáze accdb ve VB.NET a příkaz UPDATE   otázka

VB.NET, Databáze

Prosím o nakopnutí, už jsem skutečně bezradný, kde je chyba. Když udělám nový záznam do tabulky databáze accdb pomocí:

Sql = "INSERT INTO " & ComboBox1.Text & " (Typ,Umístění,Název,Chemicky,CAS,Popis,Rozpustnost,Výrobce,Dodavatel,Přijato,Cena,List,Použitelnost,Poznámka,Surovina,MSDS,Info,Odkaz) "
Sql = Sql + "VALUES ('" & ComboBox1.Text & "','" & TB2.Text & "','" & TB3.Text & "','" & TB4.Text & "','" & TB5.Text & "','" & TB6.Text & "','" & TB7.Text & "','" & TB8.Text & "','" & TB9.Text & "','" & TB10.Text & "','" & Val(TB11.Text) & "','" & TB12.Text & "','" & TB13.Text & "','" & TB14.Text & "','" & TB15.Text & "',@Dokument1,@Dokument2,'" & TB16.Text & "')"

a pak kód 2

mycmd = New OleDb.OleDbCommand
If Not CN.State = ConnectionState.Open Then
     CN.Open()
End If
mycmd.Connection = CN
mycmd.CommandText = Sql
mycmd.Parameters.AddWithValue("@Dokument1", IIf(Dokument1.Length = 0, "", Dokument1))
mycmd.Parameters.AddWithValue("@Dokument2", IIf(Dokument2.Length = 0, "", Dokument2))
mycmd.ExecuteNonQuery()
CN.Close()

tak všechno funguje.

Když ale dám UPDATE:

Sql = "UPDATE '" & ComboBox1.Text & "' SET "
Sql = Sql + "Typ='" & ComboBox1.Text & "',"
Sql = Sql + "Umístění='" & TB2.Text & "',"
Sql = Sql + "Název='" & TB3.Text & "',"
Sql = Sql + "Chemicky='" & TB4.Text & "',"
Sql = Sql + "CAS='" & TB5.Text & "',"
Sql = Sql + "Popis='" & TB6.Text & "',"
Sql = Sql + "Rozpustnost='" & TB7.Text & "',"
Sql = Sql + "Výrobce='" & TB8.Text & "',"
Sql = Sql + "Dodavatel='" & TB9.Text & "',"
Sql = Sql + "Přijato='" & TB10.Text & "',"
Sql = Sql + "Cena='" & Val(TB11.Text) & "',"
Sql = Sql + "List='" & TB12.Text & "',"
Sql = Sql + "Použitelnost='" & TB13.Text & "',"
Sql = Sql + "Poznámka='" & TB14.Text & "',"
Sql = Sql + "Surovina='" & TB15.Text & "',"
Sql = Sql + "MSDS=@Dokument1,Info=@Dokument2,"
Sql = Sql + "Odkaz='" & TB16.Text & "'"
Sql = Sql + " WHERE"
Sql = Sql + " ID=" & id

a pak kód 2, tak skončím s chybou:"Chyba syntaxe v dotazu. Nekompletní klauzule dotazu."

Podotýkám, že datové typy sedí, nevadí prázdný řetězec (to by hlásilo jinou chybu), connectionstring, connect, deklarace a tyhle věci jsou taky OK... prostě nemůžu najít co je blbě a co může generovat tuhle chybu.

Poradí někdo?

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

Proč nezadáváte všechny hodnoty pomocí parametrů?

Pro kontrolu by bylo lepší, kdybyste sem hodil CommandText toho dotazu potom, co ho celý složíte. Takhle to může být nějaký chybějící apostrof, nebo taková blbost.

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

Nerozumím otázce proč nezadávám všechny hodnoty pomocí parametrů...?

Sql vypadá takto:

UPDATE 'Chemikálie' SET Typ='Chemikálie',Umístění='',Název='AAA',Chemicky='Pokus',CAS='',Popis='',Rozpustnost='',Výrobce='',Dodavatel='',Přijato='31.5.2013',Cena='0',List='',Použitelnost='',Poznámka='',Surovina='',MSDS=@Dokument1,Info=@Dokument2,Odkaz='' WHERE ID=950

Asi mám už provozní slepotu, ale nevídím tam žádný problém, apostrofy a uvozovky jsem konktroloval jako první. I když vím, že zrovna tohle dokáže potrápit :-)

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

Zdravim, nejsem odborník na SQL, ale myslím, že název tabulky v uvozovkách být nemusí či dokonce nesmí ? Takže pouze: UPDATE Chemikalie SET ....

Zkuste.

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

Název tabulky při UPDATE musí být v hranatých závorkách

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

Souhlasím s p. Ladislav Böhmem

Všechno ukládejte do parametrů. Nehledě na to že můžete mít nějaký nepovolený znak v těch textboxech.

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