[vb2005] Select query gaat niet goed

Pagina: 1
Acties:

  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
Ik heb de volgende query gedefinieerd in de Query builder:

SELECT Art_Nr, Art_ArtikelCode, Art_Omschrijving
FROM Artikelen
WHERE (Art_Omschrijving LIKE '%' + @omschrijving + '%')


Als ik dan op Execute Query druk, dan vul ik bij de waarde voor omschrijving een gedeeltelijke artikelnaam in en wordt dat record keurig getoond.

Maar:
vanuit een formuliervoer ik deze query uit door de volgende regel uit te voeren:

Me.ArtikelenTableAdapter.FillByOmschrijving(Me.DataSet.Artikelen, "doos")

Helaas worden er dan geen records gevonden.
Met andere queries zonder LIKE werkt dit perfect.
Ook als ik heel de omschrijving zoek gaat het goed (bv doos wortelen)
alleen gedeeltes van de omschrijving gaan fout en die wil ik er nu net in hebben.


Ik loop nu al +/- een dag hier naar te puzzelen en heb al diverse forums en onlinebooks afgestruind, maar ik maar niet vinden wat ik fout doe.... Hebben jullie een idee

[ Voor 8% gewijzigd door Sjakskus op 22-03-2007 08:45 . Reden: probleemomschrijving uitgebreid ]

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • Ahrnuld
  • Registratie: April 2002
  • Laatst online: 09:09
Sjakskus schreef op donderdag 22 maart 2007 @ 08:29:
Ik heb de volgende query gedefinieerd in de Query builder:

SELECT Art_Nr, Art_ArtikelCode, Art_Omschrijving
FROM Artikelen
WHERE (Art_Omschrijving LIKE '%' + @omschrijving + '%')
Ongetwijfeld een domme opmerking (ik ben niet zo bedreven met SQL), maar is het niet zo dat de % tekens eigenlijk in @omschrijving horen?

Niets...


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
SELECT Art_Nr, Art_ArtikelCode, Art_Omschrijving
FROM Artikelen
WHERE (Art_Omschrijving LIKE @omschrijving')

en

Me.ArtikelenTableAdapter.FillByOmschrijving(Me.DataSet.Artikelen, "%doos%")

werkt helaas ook niet. dit heb ik al geprobeerd

[ Voor 0% gewijzigd door Sjakskus op 22-03-2007 08:45 . Reden: taalfout ]

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • cspare
  • Registratie: Oktober 2006
  • Laatst online: 29-07 22:19

cspare

What the deuce?!

Probeer eens met sql profiler te kijken of de query daadwerkelijk zo wordt uitgevoerd als je denkt dat het zou moeten.
En wat doe je precies in de FillByOmschrijving methode?

The one who says it cannot be done, should never interrupt the one who is doing it.


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
FillByOmschrijving = de query.
deze heb ik gedefinineerd in het dataset

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wat doen die plusjes daar ?
doe het eens zo:
code:
1
2
3
string sqlQuery = "SELECT * FROM blaat WHERE veld LIKE @parameter";
SqlCommand c = new SqlCommand (sqlQuery);
c.Parameters.Add ("@parameter", SqlDbType.Varchar).Value = "%" + variable + "%";


klik

https://fgheysels.github.io/


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
Whoami:
Die plusjes zijn nodig, anders geeft de query builder een foutmelding.
In de query builder werkt het ook prima,

maar als ik die query met
Me.ArtikelenTableAdapter.FillByOmschrijving(Me.DataSet.Artikelen, "doos")
krijg ik een tabel met 0 records

cspare: ik gebruik sqlserver express, daarin zit geen sql profiler (voor zover ik kan vinden)

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Sjakskus schreef op donderdag 22 maart 2007 @ 10:40:
Whoami:
Die plusjes zijn nodig, anders geeft de query builder een foutmelding.
In de query builder werkt het ook prima,
Die plusjes staan daar helemaal niet goed in je eerste voorbeeld, je zou trouwens zelfs een syntax error moeten krijgen afaik.
Kijk nog eens naar m'n code-voorbeeld; zo moet het.

https://fgheysels.github.io/


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Als ik je query zo zie staat er nog een foutje in:
SQL:
1
2
3
SELECT Art_Nr, Art_ArtikelCode, Art_Omschrijving
FROM Artikelen
WHERE (Art_Omschrijving LIKE @omschrijving')
Hint: een ' achter omschrijving.

Ik liep in een oud topic ook te kloten met parameters in combinatie met een like.
C#:
1
2
3
4
string sqlQuery = "select postcode from tbl_postcodes where naam like @p_naam";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = sqlQuery;
cmd.Parameters.Add ("@p_naam", SqlDbType.Varchar).Value = "%"+ var + "%";

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Sjakskus
  • Registratie: Maart 2002
  • Laatst online: 28-11 15:34
AAAGH ik ben er achter na uren/dagen speuren

Ik had het datatype van art_omschrijving gedefinieerd als NChar.
Hierdoor was art_omschrijving altijd dezelfde lengte en kon het niet goed omgaan met de % tekens
Na het datatype veranderd te hebben in Varchar was het probleem opgelost.

Maar voordat je daar achter bent....

overigens was mijn query :

SELECT Art_Nr, Art_ArtikelCode, Art_Omschrijving
FROM Artikelen
WHERE (Art_Omschrijving LIKE '%' + @omschrijving + '%')

wel goed.

WHoAmI: Ik werk met VB2005 en met TableAdapters ipv de methode die jij voorstelt.
Allemaal weer tnx voor de hulp

Beschikbaar voor ontwikkeling van (webbased) applicaties en dataconversies

Pagina: 1