[Delphi&Access] sql werkt niet in Delphi, wel in Access

Pagina: 1
Acties:

  • jobo
  • Registratie: Februari 2001
  • Laatst online: 29-01 16:32
Hallo,

Ik ben een applicatie aan het schrijven in Delphi die gebruik maakt van een bestaande access 97 database. Nu probeer ik in Delphi een query te filteren door achter het 'SELECT' statement 'WHERE' op te nemen. Nu krijg ik daarna alleen een foutmelding bij het activeren van de query. Wanneer ik de query kopieer naar Access werkt het wel en krijg ik de juiste gegevens te zien.

het select statement zier er als volgt uit:
code:
1
 'SELECT * FROM relatiegegevens WHERE bedrijfsID = 3'

ik krijg dan de volgende foutmelding

Afbeeldingslocatie: http://www.chello.nl/~f.boerboom1/foutmeldingdelphi1.JPG

Wanneer ik op de knop Next klik, verschijnt het volgende (Waar ik ook niets mee kan)
Afbeeldingslocatie: http://www.chello.nl/~f.boerboom1/foutmeldingdelphi2.JPG

Heeft er iemand een idee wat hier het probleem kan zijn?

P.S.
- Ik gebruik in Delphi een BDE Query component
- Er is een ODBC koppeling gemaakt binnen windows om Delphi te laten communiceren met Access
- Als ik het Where gedeelte weg laat in SQL, dan krijg ik wel netjes alle ongefilterde gegevens te zien.

need more coffee!!!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik zou de ADO componenten gebruiken. Dat werkt veel makkelijker icm Access en je hebt ook nog eens veel minder kans op installatie en configuratie problemen.

Hoe voer je de query precies uit in Delphi? Wat voor type veld is BedrijfsID?

We adore chaos because we like to restore order - M.C. Escher


  • cavey
  • Registratie: Augustus 2000
  • Laatst online: 17-02 19:31
Eh, je krijgt error nummers van je Borland omgeving... kan je daar niet eens op zoeken en zien wat de documentatie van Delphi (online dan wel op je computer zelf) erover te melden heeft?

Error nummers zijn er niet voor niks... maar wellicht dat je een syntaxis error hebt in je query? Rare typecasting of juist niet... of iets anders? Maybe geen goeie odbc koppeling?

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:27

Tomatoman

Fulltime prutser

Probeer eens wat er gebeurt als je
SQL:
1
SELECT * FROM relatiegegevens
als query gebruikt. Als dat werkt test je
SQL:
1
SELECT bedrijfsID, [veld2], [veld3] FROM relatiegegevens WHERE bedrijfsID = 3
Op deze manier kun je uitsluiten of het probleem in je query zit. Kijk trouwens ook eens in de Helpfiles van TQuery en TAdoQuery bij de beschrijving van de Params property, misschien gaat er een wereld voor je open :).

Zoals al is opgemerkt zou je kunnen overstappen naar ADO. De BDE wordt al een tijd niet meer verder ontwikkeld en is door Borland afgedankt. ADO geeft minder configuratieproblemen en geeft foutmeldingen in begrijpelijke tekst (in tegenstelling tot de BDE).

Een goede grap mag vrienden kosten.


  • jobo
  • Registratie: Februari 2001
  • Laatst online: 29-01 16:32
De query

code:
1
 select * from relatiegegevens

werkt goed. Alleen wanneer ik 'where' toevoeg aan de query begint hij te mekkeren. Ik zal toch eens gaan proberen om over te stappen op ado. misschien dat het dan wel werkt.

Er is in ieder geval geen Syntaxis fout in de code. Wanneer ik namelijk de code kopieer en in een query van Access zelf plak werkt het wel.

De ODBC kan volgens mij niet echt het probleem zijn. ik heb gewoon de stappen van windows gevolgd. Daarbij kun je alleen aangeven welke database er gebruikt moet worden en met welke naam/wachtwoord er aangemeld moet worden. Maar omdat ik het niet zeker weet zou ik graag willen weten of het mogelijk is om de access database op een andere manier dan ODBC te koppelen aan Delphi.

Ik hoor het wel!

need more coffee!!!


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:27

Tomatoman

Fulltime prutser

Het zou kunnen dat jouw specifieke oplossing de constructie
SQL:
1
2
3
SELECT *
FROM MijnTabel
WHERE Veld1 = 'blaat'
niet ondersteunt, terwijl
SQL:
1
2
3
SELECT Veld1, Veld2, Veld3
FROM MijnTabel
WHERE Veld1 = 'blaat'
probleeemloos werkt. Gewoon even proberen. Dit kan te maken hebben met de combinatie van de database, data access componenten in Delphi en alle layers die daartussen hangen. De tweede oplossing (dus veldnamen expliciet benoemen in plaats van * gebruiken) heeft als belangrijk bijkomend voordeel dat je de afzonderlijke velden via de Fields property van de query kunt benaderen.

[ Voor 3% gewijzigd door Tomatoman op 30-08-2004 13:09 ]

Een goede grap mag vrienden kosten.

Pagina: 1