accdb ještě jedn problém   otázka

SQL, ADO.NET, Office

Moc děkuji za ochotu v předchozím dotazu, ale mám další.

content1 = ImageToStream(PictureBox1.Image)
            sql = "INSERT INTO vzorky_popis (Nazev,Kategorie,Podkategorie,Popis,Vyrobce_jmeno,Vyrobce_web,Prodejce_jmeno,Prodejce_web,Distributor_jmeno,Distributor_web,Porizeno_datum,Porizeno_misto,Porizeno_jmeno,Cena_cislo,Cena_mena,Foto1) "
            sql = sql + "VALUES('" & TextBox1.Text & "','" & ComboBox2.Text & "','" & ComboBox6.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox6.Text & "','" & TextBox7.Text & "','" & TextBox8.Text & "','" & TextBox4.Text & "','" & TextBox18.Text & "','" & Format(CDate(TextBox9.Text), "d.M.yyyy") & "','" & TextBox10.Text & "','" & TextBox11.Text & "','" & Val(TextBox12.Text) & "','" & ComboBox1.Text & "','" & "',@content1)"
            mycmd = New OleDb.OleDbCommand
            If Not CN.State = ConnectionState.Open Then
                CN.Open()
            End If
            mycmd.Connection = CN
            mycmd.CommandText = sql
            mycmd.Parameters.AddWithValue("@Foto1", content1)
            mycmd.ExecuteNonQuery()
            fName = ""
            CN.Close()

zhavaruje na příkazu mycmd.ExecuteNonQuery() s hláškou "Počet hodnot dotazu a cílových polí není stejný."

Struktura databáze odpovídá dotazu, počet názvů polí i polí souhlasí, už opravdu nevím co by mohlo chybu generovat.

Poradí prosím někdo?

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

V dotazu máte @content1, ale přidáváte pojmenovaný parametr @Foto1. Být Vámi, použiji pojmenované parametry na úplně všechny hodnoty v dotazu a vyvarujete se skládání dotazů takhle spojováním stringů. Je to lepší praxe, přehlednost se zvýší řádově a bude se to mnohem snadněji spravovat.

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

Děkuji, nicméně mi to neřeší problém...protože jsem v databázi accdb v tabulce umazal 3 pole, smazal jsem je i v sql dotazu a objevila se mi ta hláška. Před tím všechno fungovalo bez problémů.

Jeětě prosím o ukázku jak lépe by měl ten sql dotaz vypadat?

Děkuji

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

Počet sloupců i hodnot skutečně souhlasí, bohužel nevím, co způsobuje Váš problém.

Pokud jde o to vytvoření dotazu, myslel jsem to tak, abyste předával všechny hodnoty pomocí Parameters.AddWithValue:

Insert Into
Vzorky (Název, Kategorie, Podkategorie, ...)
Values (@nazev, @kategorie, @podkategorie, ...)

A v kódu pak obdnobně jako s obrázkem nastavíte i další hodnoty:

mycmd.Parameters.AddWithValue("@nazev", TextBox1.Text)
mycmd.Parameters.AddWithValue("@kategorie", ComboBox1.Text)
mycmd.Parameters.AddWithValue("@podkategorie", ComboBox2.Text)
...

Uvidíte, že se v tom bude dát lépe orientovat a třeba se pak dostanete blíže k podstatě problému.

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

Vyřešeno, nejvíce potrápí apostrof či uvozovka navíc...tam byla chyba. Přesto děkuji za námety

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