Toon posts:

[VB.Net+ADO] Probleem m.b.t een query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste tweakers,

Ik zit met een klein probleempje omtrent een sql query die ik probeer uit te voeren,
het werkt wel, maar alleen als de invoer nummeriek is.
ik heb zo het idee dat het misgaat zodra de dataset gevuld word (da.fill).
Hier een het stukje code:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Dim con As New OleDb.OleDbConnection
        con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = <censuur>"
        con.Open()

        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String
        sql = "SELECT * FROM RMA where Serienummer like " & txtserienummer.Text
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "rma")
        txtleverancier.Text = ds.Tables("rma").Rows(0).Item(3)
        txtserienummer.Text = ds.Tables("rma").Rows(0).Item(2)
        txtdatum.Text = ds.Tables("rma").Rows(0).Item(1)
 


ik heb al lopen googlen maar dat bood mij geen duidelijk antwoord.
mvg,
schizo

edit:
Ik had graag een oplossing waarbij de invoer zowel cijfers als letters als koppelstreepjes kan bevatten.

[ Voor 5% gewijzigd door Verwijderd op 17-07-2007 13:15 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Tip:
SQL:
1
WHERE KOLOMNAAM LIKE '%woei%'

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:17

lier

MikroTik nerd

schizo + gorgi_19 maakt:

[code=sql]sql = "SELECT * FROM RMA where Serienummer like '%" & txtserienummer.Text & "%'"[/code=sql]
offtopic:
Of zeg ik nu te veel ?

Eerst het probleem, dan de oplossing


Verwijderd

Topicstarter
bedankt voor de tip, maar helaas verandert dit niets aan de situatie.
btw de error die ik telkens krijs is:" oldbexeption was unhandled "

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Print je sql eens net nadat je hem hebt opgebouwd ipv uit te voeren. Hoe ziet hij er dan uit? En overweeg ook eens om gebruik te gaan maken van parametrized queries.

[ Voor 27% gewijzigd door gorgi_19 op 17-07-2007 13:27 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • barfieldmv
  • Registratie: Maart 2004
  • Laatst online: 10-10 12:36
Verwijderd schreef op dinsdag 17 juli 2007 @ 13:13:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
        Dim con As New OleDb.OleDbConnection
        con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = <censuur>"
        con.Open()

        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String
        sql = "SELECT * FROM RMA where Serienummer like " & txtserienummer.Text
        da = New OleDb.OleDbDataAdapter(sql, con)
        
try
        da.Fill(ds, "rma")
catch sqlExcep as Exception    
'fout in sql
'fout in connectie string
end try
        txtleverancier.Text = ds.Tables("rma").Rows(0).Item(3)
        txtserienummer.Text = ds.Tables("rma").Rows(0).Item(2)
        txtdatum.Text = ds.Tables("rma").Rows(0).Item(1)
 
Wat zijn de parameters die je meegeeft aan de sql query? en doet die het wel in bijvoorbeeld een sql manager?

Een oledb exception betekend dat er of iets met de verbinding of iets met de sql query mis is. Als het goed is kan je meer informatie van die exception opvragen en iets als:
invalid character near where
terug vinden.

[ Voor 10% gewijzigd door barfieldmv op 17-07-2007 13:29 ]


Verwijderd

Topicstarter
Bedankt voor de hulp maar ik ben eruit mede dankzij lier z'n sql string

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op dinsdag 17 juli 2007 @ 13:29:
Bedankt voor de hulp maar ik ben eruit mede dankzij lier z'n sql string
In beginsel was die van hem gelijk aan die van mij, met uitzondering dat ik "KOLOMNAAM" heb neergezet. Of heb je die toen letterlijk overgenomen?

En weet je nu ook de oorzaak van je probleem?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ja, het lag puur en alleen in de opbouw van de query.
zo zie je maar weer dat als je de hele dag al aan het coden bent , je concentratie en analytisch vermogen zakken .

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

Mag ik even een RMA invoeren met als serienummer
code:
1
bier%'; delete from RMA; drop table Produkt; select '

asjeblieft?

Professionele website nodig?


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Dat mag, maar dat zal een foutmelding opleveren ;)

Als ik het me goed herinner moet je bij de JET engine DELETE * FROM gebruiken :P

Oops! Google Chrome could not find www.rijks%20museum.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

P_de_B schreef op dinsdag 17 juli 2007 @ 13:41:
Dat mag, maar dat zal een foutmelding opleveren ;)

Als ik het me goed herinner moet je bij de JET engine DELETE * FROM gebruiken :P
En ivm performance redenen kan je dan beter truncate gebruiken :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

P_de_B schreef op dinsdag 17 juli 2007 @ 13:41:
Dat mag, maar dat zal een foutmelding opleveren ;)

Als ik het me goed herinner moet je bij de JET engine DELETE * FROM gebruiken :P
Ach met behulp van de foutmelding ga ik iig een hoop nuttige informatie krijgen om de rest van het systeem te hacken :Y)

ondersteunt dat ding echt geen ANSI-SQL delete syntax? :X

Professionele website nodig?


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:17

lier

MikroTik nerd

Nog even een vraagje uit interesse, waarom maak je gebruik van de OleDB adapter (en niet van de ADO.NET oplossing) ?

Eerst het probleem, dan de oplossing


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:20
P_de_B schreef op dinsdag 17 juli 2007 @ 13:41:
Dat mag, maar dat zal een foutmelding opleveren ;)

Als ik het me goed herinner moet je bij de JET engine DELETE * FROM gebruiken :P
Ik geloof wel dat die OleDb dinges dat goed zal vertalen hoor; de JET engine zelf verwacht nl. ook * als wildcard-char ipv %, maar als je via OleDb een query ala 'select * from bla where melk like 'bliep%' geeft, dan zal die ook gewoon goed uitgevoerd worden in acces, dus ik vermoed dat dat andere ook wel zal lukken.Kan het wel niet testen hierzo; enkel een i-net verbindingske tot mijn beschikking, geen devtools

En een truncate: ik weet niet of Access dat kent. :P Zowiezo werkt een truncate niet op een table als er een relatie ligt naar een andere table.
lier schreef op dinsdag 17 juli 2007 @ 13:59:
Nog even een vraagje uit interesse, waarom maak je gebruik van de OleDB adapter (en niet van de ADO.NET oplossing) ?
:?
AFAIK gebruikt hij gewoon ADO.NET. Die OleDb adapter is een onderdeel van ADO.NET; hij gebruikt gewoon de classes die in System.Data.OleDb zitten vziw.

[ Voor 18% gewijzigd door whoami op 17-07-2007 19:09 ]

https://fgheysels.github.io/


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:17

lier

MikroTik nerd

whoami schreef op dinsdag 17 juli 2007 @ 19:07:
:?
AFAIK gebruikt hij gewoon ADO.NET. Die OleDb adapter is een onderdeel van ADO.NET; hij gebruikt gewoon de classes die in System.Data.OleDb zitten vziw.
Oeps...
Probeerde voor te stellen om de SqlClient te gebruiken in plaats van OleDb (welke inderdaad beiden ADO.NET zijn...).

Eerst het probleem, dan de oplossing


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

Wel leuk dat die helpdeskers nooit in hun topic kijken nadat ze een hapklare oplossing hebben gekregen: wederom een hopeloos lekke applicatie/website in deze wereld :z

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:20
Verschil moet er wezen nietwaar; jij moet toch je exuberante loon kunnen rechtvaardigen. :+

https://fgheysels.github.io/

Pagina: 1