Toon posts:

[VB.NET 2005] SQL Query uitvoeren op Dataset

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik wil een zelf geschreven SQL Query uitvoeren op een tabel uit een dataset.
Dus de data uit de tabel filteren d.m.v. een SQL Query.
De resultaten moeten in een datagrid te zien zijn.
Dit is wat ik heb geprobeerd en zal aardig in de richting zitten maar net een klein dingetje ofzo niet goed hebben gedaan:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
        Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb"
        Dim cn As New OleDb.OleDbConnection(connectionString)
        cn.Open()

        Dim queryString As New OleDb.OleDbCommand("SELECT * FROM tabel WHERE attribuut = blabla", cn)

        Dim adapter As New OleDb.OleDbDataAdapter(queryString)
        Dim ds As New DataSet

        adapter.Fill(ds, "tabelnaam")
        cn.Close()

        datagrid.DataSource = ds

Ik krijg geen foutmeldingen maar de datagrid is leeg, geen resultaten, terwijl als ik de query in access uitvoer ik 1 record krijg, dus het ligt niet aan de SQL Query.
Ik heb op msdn gezocht en kom bijna hetzelfde tegen alleen dan in sqladapters en sqlconnection.
Ik hoop dat iemand mij spoedig kan helpen want ik moet het vandaag af hebben :X

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Een SQL query, zoals jij wilt doen kan je op een Database doen, en met zo'n query kan je gegevens in een DataTable / DataSet inladen.

Wat wil je nu eigenlijk doen ? Als ik je code zie, zie ik dat je een query op een database wilt uitvoeren ? Is het dat wat je wil, of, wil je de gegevens die je al in een DataSet geladen hebt, verfijnen ?

Als het het eerste is: ben je zeker dat je met de goede DB connect ? Ben je zeker dat het SelectCommand van je DataAdapter goed is ? Ben je zeker dat je query goed is ? Gebruik je quotes wanner het moet, en geen quotes wanneer het nite mag ? etc...
Of nog beter : gebruik je parametrized queries ?
Wat gebeurt er als je een simpele query wilt uitvoeren zonder WHERE clausule ?

Maw: debuggen...

https://fgheysels.github.io/


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Volgens mij moet je op je datagrid nog een 'bind()' method of iets dergelijks oproepen.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Topicstarter
[quote]whoami schreef op vrijdag 01 september 2006 @ 14:27:
Wat wil je nu eigenlijk doen ? Als ik je code zie, zie ik dat je een query op een database wilt uitvoeren ? Is het dat wat je wil, of, wil je de gegevens die je al in een DataSet geladen hebt, verfijnen ?[quote]JUIST, dat is precies wat ik wil. Nu begin ik met een simpele query, maar dat wordt een query met user input van het scherm enzo, maar eerst moet deze query werken.
Zelfs als ik alleen een select * from tabel query doe, krijg ik geen resultaten in de datagrid.
Dus de fout zal hem ergens zitten in het databinden van de dataset aan de datagrid.
Maar wat gaat er fout ??? dat is de vraag waarop ik het antwoord niet weet.
Ik hoop dat je hier iets meer aan hebt !!! alvast bedankt

Verwijderd

Topicstarter
Feyd-Rautha schreef op vrijdag 01 september 2006 @ 14:30:
Volgens mij moet je op je datagrid nog een 'bind()' method of iets dergelijks oproepen.
daar zat ik ook aan te denken ja, maar die kon ik niet vinden in de properties, alleen databindings maar dat is het niet.

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Je bedoelt de:

C#:
1
datagrid.DataBind();


Volgens mij mag dat geen invloed hebben.

Portfolio


Verwijderd

Topicstarter
Gurbe de n00b schreef op vrijdag 01 september 2006 @ 14:38:
Je bedoelt de:

C#:
1
datagrid.DataBind();


Volgens mij mag dat geen invloed hebben.
Nee denk het ook niet, want als ik het zonder handmatige SQL query doe maar d.m.v. de dataset.fill methode die je kan instellen bij de DataTable/TableAdapter en dan filters op attributen zetten dan hoef ik ook niet opnieuw te databinden ofzo.
Nadeel hiervan is dat je geen Null values kan invoeren (zover ik weet), je moet alle filters invullen en ze moeten allemaal overeenkomen wil die het kunnen vinden. De gebruikers hebben in mijn applicatie die ik aan het bouwen ben de mogelijkheid om op 4 attributen te zoeken, maar ze kunnen er ook maar 2 invullen of 1, als je dan lege waarden hebt vind ie de record niet, daarom wou ik het d.m.v. een handmatige SQL query doen met LIKE en % teken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Feyd-Rautha schreef op vrijdag 01 september 2006 @ 14:30:
Volgens mij moet je op je datagrid nog een 'bind()' method of iets dergelijks oproepen.
Da's enkel zo in ASP.NET, niet in winforms.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Verwijderd schreef op vrijdag 01 september 2006 @ 14:43:
[...]

Nee denk het ook niet, want als ik het zonder handmatige SQL query doe maar d.m.v. de dataset.fill methode die je kan instellen bij de DataTable/TableAdapter en dan filters op attributen zetten dan hoef ik ook niet opnieuw te databinden ofzo.
Nadeel hiervan is dat je geen Null values kan invoeren (zover ik weet), je moet alle filters invullen en ze moeten allemaal overeenkomen wil die het kunnen vinden. De gebruikers hebben in mijn applicatie die ik aan het bouwen ben de mogelijkheid om op 4 attributen te zoeken, maar ze kunnen er ook maar 2 invullen of 1, als je dan lege waarden hebt vind ie de record niet, daarom wou ik het d.m.v. een handmatige SQL query doen met LIKE en % teken.
Nee, het nadeel daarvan is dat je onnodig veel gegevens uit je DB trekt -> performance hit.

Nogmaals m'n vraag: gebruik je parametrized queries ? Hoe bouw je die query op ?
Op GoT willen we je best helpen, maar dit begint hier meer naar een 'debug m'n code', en 'los het ff voor mij op, want het moet vandaag af en ik wil straks naar huis' topic te lijken, en dat is de bedoeling niet...

Als ze 2 van de 4 items niet specifieren, waarom zou je die velden dan opnemen in je WHERE clausule ? Vertraagt de boel alleen maar, en je maakt het voor jezelf ook alleen maar ingewikkelder.
-> Check welke velden ingevuld zijn door de gebruiker; bouw adhv daarvan de correct where clausule.

[ Voor 10% gewijzigd door whoami op 01-09-2006 14:57 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op vrijdag 01 september 2006 @ 14:54:
[...]

Da's enkel zo in ASP.NET, niet in winforms.
Heb je al ontdekt waar de fout in mijn code zit ?

Verwijderd

Topicstarter
whoami schreef op vrijdag 01 september 2006 @ 14:56:
[...]
Nogmaals m'n vraag: gebruik je parametrized queries ? Hoe bouw je die query op ?

Als ze 2 van de 4 items niet specifieren, waarom zou je die velden dan opnemen in je WHERE clausule ? Vertraagt de boel alleen maar, en je maakt het voor jezelf ook alleen maar ingewikkelder.
-> Check welke velden ingevuld zijn door de gebruiker; bouw adhv daarvan de correct where clausule.
De query die ik gebruik staat gewoon in mijn code die ik gepost heb.
Ik weet niet van tevoren op hoeveel items ze willen zoeken. Dit kan 1,2,3 of 4 items zijn.
Ik heb al aangegeven dat het probleem niet in de query zit maar ergens anders in. Ik wil alleen weten hoe ik een handmatig geschreven SQL Query kan gebruiken op een database / tabel, om zodoende gegevens te filteren. Als ik nu een simpele query gebruik krijg ik geen resultaten dus er zit ergens een fout en ik hoop dat jullie mij kunnen sturen in welke regel ik bijvoorbeeld het moet zoeken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:26
Verwijderd schreef op vrijdag 01 september 2006 @ 14:56:
[...]
Heb je al ontdekt waar de fout in mijn code zit ?
Tja, als we zo gaan beginnen:
Ik zeg niet dat we je hier wel willen helpen, maar dat het niet de bedoeling is om al het dirty work aan anderen over te laten.
Weet je wat : debug je code eens; kijk eens wat er naar de DB gestuurd wordt, volg de tips die ik je aangeef. Dat zijn dingen die iedereen die programmeert zelf moet kunnen (debuggen) en zeker niet aan anderen overlaten.
Ik weet niet van tevoren op hoeveel items ze willen zoeken. Dit kan 1,2,3 of 4 items zijn.
Nee, maar op het moment dat je je query wilt uitvoeren, weet je dat wel, en dus kan je op basis daarvan een WHERE clausule dynamisch aanmaken.
Ik heb al aangegeven dat het probleem niet in de query zit maar ergens anders in.
Als je dat zo zeker weet, zeg dan eens waar ? Ik heb je al gevraagd of je zeker wist of je SelectCommand property van je DataAdapter wel goed is ? Kijk eens naar die constructor...

Ben je trouwens zeker dat de query die je in je TS toont, exact dezelfde query is die je uitvoert ? Je hebt het nl over een LIKE, en ik zie geen LIKE in die query.. Nu wil het toeval dat Access zelf daar eigenlijk de standaard niet volgt, maar je binnen je .NET code de standaard wel moet volgen.

[ Voor 52% gewijzigd door whoami op 01-09-2006 15:35 ]

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.