Visualbasic textveld in SELECT statement probleem

Pagina: 1
Acties:

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Lo, ik ben op het moment ook ff met visualbasic bezig en ik heb een klein beginners probleem.

Ik heb een simpel SELECT statement die als volgt opgebouwd is:

SELECT * FROM tabel WHERE ID = ID uit een textveld (deze is gekoppeld aan het databaseveld)

Maar als ik deze lus aan de datagrid koppel of met adoc door de lijst die aan die criteria voldoet wil bladeren werkt het niet (ado in enabled = false kleur).

Maar als handmatig een bestaande id in vul , dus where ID = 4 werkt ie wel (lijkt me logisch)

Ook wanneer ik de ID waarde van het bedrijf/product (wat dan ook) in een nieuw leeg textveld zet na knopdruk en daarna in het SELECT statement naar dat veld verwijst werkt ie ook niet.

Dus ik wilde vragen of iemand van jullie me konden helpen.

Wanneer ik volgens iemand het verkeerd aanpak (de manier waarop ik nu de ID lees) en je hebt een goede(betere) manier, graag vermelden hoe, want ik ben nog zo lang met visualbasic bezig.

Bedankt alsvast

(ik heb wel gezocht naar topics, maar kon niets vinden. Wanneer er wel een topic over is, de link altijd welkom)

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
SELECT * FROM tabel WHERE ID = ID

select * from tabel where 1 = 1?

Who is John Galt?


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op donderdag 07 maart 2002 13:10 schreef justmental het volgende:
code:
1
SELECT * FROM tabel WHERE ID = ID

select * from tabel where 1 = 1?
SELECT NAAM FROM BEDRIJF WHERE ID = (keuze gebruiker) :?

dat bedoelde ik en met zelf invoeren dus WHERE ID = '4'
maar nu moet ie nog de waarde uit een textveld pakken.

Verwijderd

Helpt het als je de Text.ID uit dat textveld omzet naar hetzelfde type als tabel.id? 4 !='4'

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op donderdag 07 maart 2002 14:00 schreef robh het volgende:
Helpt het als je de Text.ID uit dat textveld omzet naar hetzelfde type als tabel.id? 4 !='4'
Je bedoeld opties al integer instellen, bij een appart textveld (zonder koppeling) niet gedaan.

Maar als ik het aan een textveld koppel die verbinding heeft met de tabel.id veld en de waarde daarvan is integer, gaat ie er toch vanuit dat de waarde een integer is of heb ik het fout?

Verwijderd

Een textveld geeft text terug (hence the name :9 )

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op donderdag 07 maart 2002 15:21 schreef robh het volgende:
Een textveld geeft text terug (hence the name :9 )
Dat snap ik, maar als ie gekoppeld is aan een database veld wat integer is neem ie dat dan niet over?

Als ik delphi neem geeft ie de waarde wel goed mee, maar daar heb je dan een dbeEdit veld.
Dus een dbe "text" veld voor databasen, en daar werkt mijn code wel op.
Bestaat zo'n component ook in VB?
En dat textveld aanpassen doe ik dat bij datatype (? hoe hete dat ook ook al weer) in die menubalk of typ ik dat in, zo ja hoe

textveld.text asInteger ?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:14

Crazy D

I think we should take a look.

Op donderdag 07 maart 2002 16:42 schreef blijhoofd_bennie het volgende:
Dat snap ik, maar als ie gekoppeld is aan een database veld wat integer is neem ie dat dan niet over?
Kwee nie of ie de invoer ook afvangt op "integer zijn" (:P) maar in je query werkt het gewoon:
"SELECT * FROM tbl WHERE ID = " & txtTextje.Text
txtTextje mag dan een numerieke string teruggeven, in de query is het gewoon integer.

Exact expert nodig?


Verwijderd

Ik los dit meestal zo op:

StrSql = "SELECT * FROM tbl WHERE ID = '" & ZoekId & "'"

Recordset.open StrSql

Probeer het maar, dit werkt!!! :)

dus eerst een ' en dan een "

zodat de uiteindelijke string

Select * from tbl Where id = '1'

wordt

Als het id in de database geen string is maar een long dan moet je de waarde converteren door

StrSql = "SELECT * FROM tbl WHERE id = "&str(waarde)

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Ik werk gewoon met ADO en stop daar het SQL statement in, het handmatig inkloppen krijg ik (zelf) nog niet aan het lopen.

Dus wat moet ik dan invoeren in die ado connectionstring, ik kom er echt niet uit :?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:14

Crazy D

I think we should take a look.

Op donderdag 07 maart 2002 21:51 schreef blijhoofd_bennie het volgende:
Ik werk gewoon met ADO en stop daar het SQL statement in, het handmatig inkloppen krijg ik (zelf) nog niet aan het lopen.

Dus wat moet ik dan invoeren in die ado connectionstring, ik kom er echt niet uit :?
Ik moet je eerlijk zeggen: ik heb geen flauw idee.
Ik snapte van toendertijd nog de DAO controls ook geen ene moer. Heb toen gewoon een sample gevolgt die in code alles regelt, en ik begreep het in 1 keer...

Exact expert nodig?


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Kun je mee misschien een simpel voorbeeld van jezelf geven.
Die gewoon wat invoert via een zelf ingetypte code?

Ik heb hier wel wat, maar echt werken nee.
Zit dan vooral met de connection gedoe.

Maar je hebt gelijk ik snap die ADO dingen ook niet :?

Maar Visual Basic is toch hetzelfde principe als ASP? (zo niet waar zitten de verschillen).
Anders sla ik later mijn boek er ff op na, want die ado dingen zijn best wel vaag :?

Maar voor iedereen alvast bedankt voor de hulp.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:14

Crazy D

I think we should take a look.

Op donderdag 07 maart 2002 22:37 schreef blijhoofd_bennie het volgende:
Kun je mee misschien een simpel voorbeeld van jezelf geven.
Die gewoon wat invoert via een zelf ingetypte code?
Als ik zin heb om te kijken morgen ;)
Maar Visual Basic is toch hetzelfde principe als ASP? (zo niet waar zitten de verschillen).
Anders sla ik later mijn boek er ff op na, want die ado dingen zijn best wel vaag :?
Puur connectie openen en met recordsets spelen, ja zo goed als. Uiteraard is de afhandeling (controle invoer ed.) er omheen wel anders, maar als je snapt hoe je in asp een record ophaalt of wegschrijft, zal het niet zo'n grote stap zijn om het in VB te doen.

Exact expert nodig?


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op vrijdag 08 maart 2002 01:05 schreef Crazy_D het volgende:

[..]

Als ik zin heb om te kijken morgen ;)
[..]

Puur connectie openen en met recordsets spelen, ja zo goed als. Uiteraard is de afhandeling (controle invoer ed.) er omheen wel anders, maar als je snapt hoe je in asp een record ophaalt of wegschrijft, zal het niet zo'n grote stap zijn om het in VB te doen.
Dus vandaag krijg ik een stukkie code >:) ( ;) )

Maar zal dan maar eens op ASP manier proberen, klopt het trouwens dat ik altijd dat ADO ding nodig heb? terwijl ik hem niet gebruik? Bij iemand bekend?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:14

Crazy D

I think we should take a look.

Op vrijdag 08 maart 2002 08:39 schreef blijhoofd_bennie het volgende:
Dus vandaag krijg ik een stukkie code >:) ( ;) )
:P
Je hebt je nick mee, zeg maar :P
Maar zal dan maar eens op ASP manier proberen
Lijkt me op zich een aardig begin. Tutorial volgen is op zich ook geen slecht idee (al vind ik het leuker om zelf uit te zoeken, en als je het op de asp manier kent zal het je in VB wel lukken).
Op VB world staat trouwens dacht ik een tutorialtje om het wel met de datacontrol te doen.
klopt het trouwens dat ik altijd dat ADO ding nodig heb? terwijl ik hem niet gebruik? Bij iemand bekend?
Uh hoe bedoel je? Je zal; altijd een ADO connection object moeten hebben voor de connectie met je database, en recordsets ed. om er nog wat mee te kunnen. Hoeft niet per se die datacontrol te zijn, als je bij References kijkt staat er ook ergens MS Active X Data Objects tussen daarmee kun je in code alles aanmaken.

Exact expert nodig?


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op vrijdag 08 maart 2002 10:02 schreef CrazyD_at_work het volgende:

Uh hoe bedoel je? Je zal; altijd een ADO connection object moeten hebben voor de connectie met je database, en recordsets ed. om er nog wat mee te kunnen. Hoeft niet per se die datacontrol te zijn, als je bij References kijkt staat er ook ergens MS Active X Data Objects tussen daarmee kun je in code alles aanmaken.
Nou ik bedoel als ik ASP neem, typ ik gewoon de DSN in, recordsets en daarna openen (kan wezen dat ik wat vergeten ben) Maar zo'n ado ding kom je toch niet tegen in asp (in ieder geval zo'n ding in VB niet)

Wat ik dus eigenlijk wil zeggen bij ASP kun je alles met ingetypte code reden, ik meende dat dat niet kon bij VB je hebt altijd dat ADO ding nodig?

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 12:14

Crazy D

I think we should take a look.

Op vrijdag 08 maart 2002 10:26 schreef blijhoofd_bennie het volgende:
Nou ik bedoel als ik ASP neem, typ ik gewoon de DSN in, recordsets en daarna openen (kan wezen dat ik wat vergeten ben) Maar zo'n ado ding kom je toch niet tegen in asp (in ieder geval zo'n ding in VB niet)

Wat ik dus eigenlijk wil zeggen bij ASP kun je alles met ingetypte code reden, ik meende dat dat niet kon bij VB je hebt altijd dat ADO ding nodig?
Woei tis dat je zo'n blije naam hebt :P

DSN gebruik je voor de connectie. Kan ook met een connectiestring, heeft uiteindelijk hetzelfde resultaat: ja kan gezellig lullen met je database. (zitten wel verschillen tussen uiteindelijk, maar het resultaat is hetzelfde nl. dat je gewoon je database kan benaderen).
Die heb je in zowel asp als vb.

In VB kun je die datacontrol gebruiken die je op een form plet, maar je kunt het ook zonder dat ding doen (bij Components vinkje weghalen, en via Reference een reference naar de MS ADO library toevoegen).
Subtiel verschilletje is dan dat je geen CreateObject hoeft te doen zoals in asp, maar dat je er zo mee kan werken:
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open "DSN of connectiestring"

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

rs.Open "SELECT * FROM Tabelletje WHERE ID = 1", con

etc.

Exact expert nodig?


Verwijderd

Op vrijdag 08 maart 2002 10:26 schreef blijhoofd_bennie het volgende:

[..]

Nou ik bedoel als ik ASP neem, typ ik gewoon de DSN in, recordsets en daarna openen (kan wezen dat ik wat vergeten ben) Maar zo'n ado ding kom je toch niet tegen in asp (in ieder geval zo'n ding in VB niet)

Wat ik dus eigenlijk wil zeggen bij ASP kun je alles met ingetypte code reden, ik meende dat dat niet kon bij VB je hebt altijd dat ADO ding nodig?
Neeu, helemaal geen ADO 'ding' :+ nodig in VB.
FF een reference zetten naar Microsoft ActiveX Data Objects 2.x en lekker kloppen. :9

Maar eerts ff wat vraagjes die van belang kunnen zijn.

Wat voor database gebruik je ? Access (versie?), SQL .. etc.

Waar wil je je data in tonen? Grid, listbox/view, etc..

Wat is het datattype van het veld in je WhereClause?

[edit] nog sneller typen dus voor mij ;) [edit]

Verwijderd

code:
1
sqlstring = "select * from XXX where id = " & Cint(tekstveld)

Dit is de goede!!

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Voor crazy dude:
Ik weet wel dat de DSN voor de connectie is hoor :)

Maar die wil ik gewoon allemaal zelf intypen
Dus ik wil gewoon op dezelde manier als in ASP, dus zonder eender wel VB component ook (kan het nu nog niet testen).
Dus geen verwijzing naar wat dan ook, gewoon op dezelfde manier als in ASP (misschien omslacht, maar ik bepaal alles zelf en het werkt).
Kan dit ?

Voor MurphysLaw:

Nou ik gebruik nu nog access (later misschien SQL).
En ik geef de gegevens weer in een Datagrid.
Het datatype is volgens mij een integer(moet wel maar ja anders had ie wel gewerkt lijkt me) namelijk een textveld met een link naar een ID veld uit de database. Dit tekst veld verwijs ik naar in een SQL select statement, maar hij geeft de waarde niet mee (Het ADO component staat in enabled = false mode).

Wat ik wel bijna zeker weet is dat het probleem ook bij het ADO component ligt, want het SELECT statement principe wat ik doe pas:
SELECT * FROM TABEL WHERE ID = "TEXTVELD"
werkt in ASP, DELPHI.

Verwijderd

K, dan zou de methode van CrazyD moeten werken.

Met als connectiestring zoiets als

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=pad naar je database;UID=je username voor db;PWD=je password voor db;"

Gebruik Microsoft.Jet.OLEDB.4.0 voor Access 2000 en ADO 2.5 en hoger. Voor Access 97 gebruik Microsoft.Jet.OLEDB.3.61.

En probeer eens een 'Microsoft Hierachical FlexGrid Control'.

Om deze te vullen, nadat je de recordset hebt geopend (CrazyD). het volgende lijntje:

Set MSHFlexGrid1.Recordset = rs

Klaar ben je.

[edit] Je query is op zich nix mis mee als het een integer is. Werkt ie nog niet, probeer em dan eens direct in Acces uit. [edit]

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op vrijdag 08 maart 2002 11:34 schreef MurphysLaw het volgende:


[edit] Je query is op zich nix mis mee als het een integer is. Werkt ie nog niet, probeer em dan eens direct in Acces uit. [edit]
Als ik gewoon een bestaande ID invul, werkt ie wel.
Het probleem (wat ik denk) is dat de ADO niet helemaal weet wat ie moet met het textveld. Want als de waarde geen integer zou zijn, zou ie een foutmelding geven en dat doet ie dus niet. En als ik dus direct zelf een ID invul, ziet ie van ooh ja het is een Nummer hier kan ik wat mee.
Ook al zeg ik van datatype van textveld is numeric (je moet toch wat proberen) werkt ie nog niet.

Maar ik zal vandaag wel ff het handmatig alles inkloppen proberen, kijken of het me nu lukt.

Verdere tips, trick, code stukken, pages zijn altijd welkom natuurlijk :)

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Heb nu gewoon een simpel (ASP) connection string zoals hieronder onder een knop zitten

Dim con As ADODB.Connection
Dim test As Recordset
Set con = New ADODB.Connection
con.Open "bedrijvenbeheer"
Set RSproducten = con.Execute("SELECT * FROM BEDRIJVEN")

Maar nu wil ik hem koppelen aan een datagrid (heb nu een dbgrid, maar mag eender welke wezen) wanneer ik op de knop ram.

Had het als hieronder maar tervegeefs

>> DBGrid1.DataSource = RSproducten <<

en op internet wat ik zo nog vind werken ze alleen met die vb componenten en dat wil ik dus niet.
Pagina: 1