query   zodpovězená otázka

SQL, Databáze, Office

Dobrý den, mohl by mi prosím někdo poradit s odkazem na políčko ve formuláři v query. Pracuji s databází MS Access a Visual Studio 2008. Potřeboval bych do query dát filtr WHERE kde by se odkazovalo na políčko TEXTBOX1 ve FORM1.

SELECT     ID, A, B, C
FROM         Tabulka1
WHERE      A =

Podobný dotaz jsem tu našel, ale bohužel ne odpověď.

Děkuji

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

Pokud myslíte doplnit do SELECTU text z textboxu, tak by to mohlo být třeba takto:

"SELECT ID,A,B,C
FROM Tabulka1
WHERE A='" & me.TextBox1.text & "'"

Doufám že to je správně, píšu to z hlavy. Prostě musíte do toho dotazu přidat jednoduché uvozovky (pokud se tedy jedná o text, pokud sloupec A má číselný typ, jednoduché uvozovky tam nebudou).

Tento způsob skládání stringu bych ale nedoporučoval. Může nastat poměrně dost vyjímek které musíte ošetřit (např. když uživatel do textBoxu nic nezadá, popř. když zadá 2 pomlčky tak to taky bu dělat kouzla) o bezpečnosti nemluvě (SQL injection).

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

Tak to snad ne :-). O SQL injection sice píšete, ale tohle by nemělo být veřejně dostupné ani jako ukázka. Naštěstí tu již někdo odpověděl správně.

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

ahoj, teď to řeším, ale mám problém torchu někde jinde (viz můj nový dotaz)

ale podle mne by to mělo jít asi takhle

dim HodnoatTextoboxu as String
HodnotaTextBoxu=TextBox1.Text 'pripdane jeste pridat ToSTring()

SqlDotaz="WHERE A="+HodnotatextBoxu 'tohle mozna dozavorek

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

ToString není potřeba, vlastnost text vrací string. A takhle konstrukce by Vám měla fungovat pouze pokud datový ty sloupce A bude číslo (což by jste pak zase musel ošetřit na výstupu z textboxu aby Vám tam někdo nezadal text místo čísla). Tohle slepování bych ale nedoporučoval (viz. můj předchozí příspěvek).

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

Jejda.

Trivialita (nic proti Vám ale stačí si přečíst článek o komunikaci z databází):

Dim scon as new sqlconnection("Data source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|\bla.mdf; a tak dále")
Dim scom as new sqlcommand("SELECT ID,A,B,C FROM dbo.Tabulka1 WHERE A = @Acko", scon)
scom.Parameters.AddWithValue("Acko", TextBox1.Text) 'Myslím
scon.Open 'možná scom.Open
Dim dataReader As SqlDataReader = scom.ExecuteReader()
        ' smyčka na čtení záznamů
        Do While dataReader.Read ' posun na další řádky, dokud jsou k dispozici
            Msgbox(datareader("A") & datareader("B") & datareader("C")
scon.Close()
        Loop

nahlásit spamnahlásit spam 0 / 2 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