[VB] probleem invoerveld datatype & databaseveld

Pagina: 1
Acties:

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Ik heb een probleempje (al eerder gevraagd maar er nog geen oplossing gevonden).
Had het probleempje ff over geslagen, maar ik wil er nu wel ff weer mee bezig.

Het probleempje is volgende:

Ik heb een simpel invoer veld (vb noemt het textveld).
In dat veld staat een ID, dit veld bevat dus een nummerieke waarde.

Het veld in de database wat gekoppeld is aan het betreffende veld staat dus ingesteld op numeriek (db = access 2000).

Ik voer het volgende select statement uit:
SELECT * FROM Testtabel WHERE ID = & "'Invoerveld' "&

(eventuele typfouten in het selectstatement ff niet van toepassing).

Ik zet niet .text achter het invoerveld, omdat het hier een numerieke waarde betreft.

Maar wanneer ik dus dit statement uitvoer, zegt VB dat het datatype niet klopt, maar als ik van het DB veld het datatype Text maakt doet ie wel.

Hoe/Waar kan in Visualbasic instellen dat dit veld geen text is (heb de datatype wel eens aangepast, maar dat werkte ook optimaal, wat vergeten, nog een keer proberen?).

Alle oplossingen/ideeen hoor ik graag. Als ik het een code stukje moet uittypen, graag de code posten (niet dat ik lui ben, maar kan het echt niet vinden, een voorbeeld is natuurlijk genoeg).

Een link naar een page (waar expliciet dit probleem wordt uitgelegd) mag ook, want ik heb het namelijk niet kunnen vinden.

Extra info:
DB = Access 2000
Manier van database koppelen = ADO object
Taal = Visual Basic 6

Alvast bedankt

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Ik begrijp niet waarom VB over die datatypes aan het zeuren is, want in een SQL statement geef je een string aan dmv quotes en bij een getal laat je die weg...


edit:

Voorbeeld:
[code]'String
SELECT * FROM tblTabel WHERE Veld = 'String'

'Getal
SELECT * FROM tblTabel WHERE Veld = 0[/code]
Het datatype van het veld maakt dus niets uit.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02:18

Gerco

Professional Newbie

VB zeurt ook niet, dat is je DB engine :)

Probeer er eens CLng(Tekstveld) van te maken in die string, dan geeft VB een error als er iets niet klopt.

En let op je quotes:
code:
1
"SELECT * FROM tabel WHERE id = " & CLng(Tekstveld.Text) & ";"

Die .Text HOEFT er niet bij, maar het maakt geen verschil of je het nu wel of niet doet. Het argument "het is een getal" boeit niet. Als je het ZONDER .Text neerzet, roept 'ie stiekum TOCH TekstVeld.Text aan.

Het interesseert dat veld geen moer WAT erin staat, het si ALTIJD een string. Dat je dat door VB's irritante, agressieve, impliciete typecasting niet merkt zorgt alleen maar dat je programmeurs krijgt die het verschil tussen een string en een Int niet snappen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
ff er vergeten bij te zetten, als ik een getal invoer in het select statement:

SELECT * FROM TestTabel WHERE ID = '1'

Doet ie het wel, maar wanneer ik dus verwijs naar een invoerveld met de waarde 1 doet ie het niet.

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op woensdag 10 april 2002 11:37 schreef Gerco het volgende:
VB zeurt ook niet, dat is je DB engine :)

Probeer er eens CLng(Tekstveld) van te maken in die string, dan geeft VB een error als er iets niet klopt.

En let op je quotes:
code:
1
"SELECT * FROM tabel WHERE id = " & CLng(Tekstveld) & ";"
Klopt :),maar wat houdt dat CLng in (geen help hiero)?
Is dat een soort StrToInt principe.
Kan het helaas nog niet testen (zit op werk, en hier gebruiken ze delphi :))

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:05
Die quotes rond die 1 moeten hoedanook weg als ID een numeriek veld is.

https://fgheysels.github.io/


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op woensdag 10 april 2002 11:41 schreef whoami het volgende:
Die quotes rond die 1 moeten hoedanook weg als ID een numeriek veld is.
Ok, ik check dat ook ff :) (maar meende dat niet helemaal lekker liep)

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Op woensdag 10 april 2002 11:41 schreef blijhoofd_bennie het volgende:

[..]

Klopt :),maar wat houdt dat CLng in (geen help hiero)?
Is dat een soort StrToInt principe.
Kan het helaas nog niet testen (zit op werk, en hier gebruiken ze delphi :))
CLng converteerd een variabele/waarde naar een Long (mits dat mogelijk is...)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02:18

Gerco

Professional Newbie

Op woensdag 10 april 2002 11:41 schreef blijhoofd_bennie het volgende:
Klopt :),maar wat houdt dat CLng in (geen help hiero)?
CLng() = Convert to Long()

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op woensdag 10 april 2002 11:47 schreef Gerco het volgende:

[..]

CLng() = Convert to Long()
En op deze bestaan de volgende andere varianten:
(neem ik aan):

Clint
Clstr
Cldbl

  • baskabas
  • Registratie: December 2000
  • Laatst online: 05-04 12:26
Op woensdag 10 april 2002 12:04 schreef blijhoofd_bennie het volgende:

[..]

En op deze bestaan de volgende andere varianten:
(neem ik aan):

Clint
Clstr
Cldbl
Yep, maar dan zonder die l... dus

CInt
CStr
CDbl

:)

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op woensdag 10 april 2002 12:28 schreef TeknoGecko het volgende:

[..]

Yep, maar dan zonder die l... dus

CInt
CStr
CDbl

:)
ooh ja... |:(

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Het heeft lang geduurd maar hier was ik weer.

Set formHoofdScherm.rs = formHoofdScherm.cns.Execute("Update InkoopVerkoopTabel SET LeverancierNaam = '" & CStr(LeverancierProduct) & "' WHERE ID = '" & CInt(ProductID) & "' ")

Ik heb nu deze simpele recordset + connectie string, vb zegt nog steeds dat het datatype niet klopt

Heb het id veld nu staan op de waarde integer (access 2000)
als ik deze weer op datatype text gaat de hierboven genoemde lus (ook al zeg ik dat het een integer is) wel goed.

Moet ik ergens in vb nog vertellen dat het ID veld een ID waarde is (kun je in Delphi bijvoorbeeld instellen bij je paramaters in een stored procedure).

Nogmaals bedankt.

  • mulder
  • Registratie: Augustus 2001
  • Nu online

mulder

ik spuug op het trottoir

Je doet nog steeds ' om je statement heen. Je maakt van een vb string een integer, en in je SQL statement zeg weer dat het een string is. Je moet effe VB en SQL zien te scheiden.

oogjes open, snaveltjes dicht


  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Ok :) opzich wel stom van mij |:(


Hartelijk dank :) (voor iedereeen die gereplied heeft, natuurlijk)

Verwijderd

Op maandag 15 april 2002 21:43 schreef blijhoofd_bennie het volgende:
Dus met de code opbouw is niets mis lijkt me.
Vreemd, je stelt een vraag, je krijgt (meerdere malen) antwoord, maar je wil niet lezen...

edit:
Gelukkig, hij snapt het >;)

  • blijhoofd_bennie
  • Registratie: Maart 2000
  • Niet online

blijhoofd_bennie

Wasser für alle!!

Topicstarter
Op maandag 15 april 2002 21:49 schreef Debbus het volgende:

[..]

Vreemd, je stelt een vraag, je krijgt (meerdere malen) antwoord, maar je wil niet lezen...
Sorry, las over bepaalde dingen heen (doe ik wel vaker als ik druk met iets ben :'()
Pagina: 1