[Delphi+Access2k] Arguments are of the wrong type

Pagina: 1
Acties:
  • 174 views sinds 30-01-2008
  • Reageer

  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Ik heb in Delphi5 een applicatie gebouwd die gebruik maakt van een Access2000-database & dmv een ADOConnection & ADOTables de tabellen uit de database vist.

ff een LGS'je van de tabel:
code:
1
2
3
4
BROCHURE([u]Groupnr, Partnr[/u], ManufacturerID, Dim_Depth, Dim_Height, Dim_Width, Comments)

FK:  Groupnr -> GROUP(Groupnr)
     ManufacturerID -> MANUFACTURER(ManufacturerID)

Nu heb bij deze tabel deze foutmelding:

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Deze foutmelding komt voor als ik een Append uitvoer, dus ADOTableBROCHURE.Append;
Hierna komt de foutmelding & wordt niets in de lege records toegevoegd. De lege records blijven wel staan.

Deze foutmelding vind ik vooral vreemd, omdat het eerder wel gewerkt heeft, maar nu ineens niet meer.

Wie o wie kan me helpen??

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:13
Heb je iets aan je table-structure veranderd?

https://fgheysels.github.io/


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Nope, daar dacht ik eerst ook aan, maar dat is 't ook niet. Daarnet voordat ik ff ging pauzeren deed ie 't nog moeiteloos, maar nu komt ineens die foutmelding weer.

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 04-09 09:03
Op maandag 17 juni 2002 14:07 schreef Jordy het volgende:
Nope, daar dacht ik eerst ook aan, maar dat is 't ook niet. Daarnet voordat ik ff ging pauzeren deed ie 't nog moeiteloos, maar nu komt ineens die foutmelding weer.
Gebruik je de Jet4.0 driver of de Access driver?
Jet4 is beter
Maar kan het wezen dat je hem (de DB) exclusief al hebt geopend in access zelf?

Taal fouten inbegrepen ;)


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Net heb ik nog eens verder wat uitgeprobeerd. Klein inleidinkje:

Bovenstaand probleem komt voor bij een form dat gemaakt is om producten toe te voegen.
Nu heb ik een apart form om de toegevoegde producten (lees: inhoud van tabel BROCHURE) te bekijken.

Daarin zitten 7 DBEdit-velden, 1 DBMemo-veld, 1 DBNavigator & 1 DBGrid.

6 vd 7 DBEdit-velden + DBMemo-veld + DBNavigator + DBGrid hebben als DataSource: DataSourceTableBROCHURE.

1 DBEdit-veld is voor de naam van de fabrikant. Nu heb ik op de Change-Event van het DBEdit-veld van ManufacturerID de volgende code staan:
code:
1
2
if dm.ADOTableMANUFACTURER.Active then
    dm.ADOTableMANUFACTURER.Locate('ManufacturerID', DBEditViewBrochureProductManufacturerID.Text, []);

Dit heeft ook de nodige problemen opgeleverd. Gelukkig opgelost door 'if dm.ADOTableMANUFACTURER.Active then...' te gebruiken. Maar da's nu ff terzijde.

Gebruik ik de code om de naam van de Manufacturer te tonen niet, dan krijg ik de foutmelding: 'Arguments are of the wrong type...etc' niet.

Weet iemand waardoor dit komt?

Ik gebruik de Jet 4.0 driver & de database is niet in een andere applicatie geopend. Ook niet met Access zelf.

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 04-09 09:03
Op maandag 17 juni 2002 14:20 schreef Jordy het volgende:
code:
1
2
if dm.ADOTableMANUFACTURER.Active then
    dm.ADOTableMANUFACTURER.Locate('ManufacturerID', DBEditViewBrochureProductManufacturerID.Text, []);
Moet ManufacturerID niet zonder '' .
en ik denk ook dat je
code:
1
2
if dm.ADOTableMANUFACTURER.Active then
  je_variable :=  dm.ADOTableMANUFACTURER.Locate('ManufacturerID', DBEditViewBrochureProductManufacturerID.Text, []);

Taal fouten inbegrepen ;)


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
'ManufacturerID' moet met '' zijn, de invoervariabele moet nl. een string zijn.

De Locate-functie zorgt ervoor dat ervoor dat binnen de tabel MANUFACTURER de cursor gaat staan op de rij waarbij het ManufacturerID datgene is wat in DBEditViewBrochureProductManufacturerID.Text staat.

Dan kun je de ManufacturerName zo eruit vissen, want het DBEditveld voor ManufacturerName heeft als DataSource MANUFACTURER. Die laat dus het active record zien & dat is dus net actief gemaakt door de Locate-functie.

Ik hoop dat deze uitleg over de Locate-functie duidelijk voor iedereen is.

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 04-09 09:03
Op maandag 17 juni 2002 14:30 schreef Jordy het volgende:
'ManufacturerID' moet met '' zijn, de invoervariabele moet nl. een string zijn.

De Locate-functie zorgt ervoor dat ervoor dat binnen de tabel MANUFACTURER de cursor gaat staan op de rij waarbij het ManufacturerID datgene is wat in DBEditViewBrochureProductManufacturerID.Text staat.

Dan kun je de ManufacturerName zo eruit vissen, want het DBEditveld voor ManufacturerName heeft als DataSource MANUFACTURER. Die laat dus het active record zien & dat is dus net actief gemaakt door de Locate-functie.

Ik hoop dat deze uitleg over de Locate-functie duidelijk voor iedereen is.
En als die hem niet vind .... foutmelding :?
ik zou het in een try except zetten voor de zekerheid

Taal fouten inbegrepen ;)


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Dat heb ik eens toegevoegd & nu komt iets heel vreemds:

Nu krijg ik niet meer de foutmelding: 'Arguments are of the wrong type...etc', maar die wat ik net aan heb gemaakt.

Wat nu echt het hele vreemde is: Die foutmelding staat in een andere unit. Die andere unit (om de tabel te bekijken) staat ook niet in m'n 'uses' lijstje van de 'append'-unit.

Het enige wat ikzelf heb toegevoegd aan 't uses-lijstje van zowel de 'append'- als de 'view'-unit is:
uses uDataModule.

Weet iemand waar dit aan kan liggen?

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op maandag 17 juni 2002 14:50 schreef Jordy het volgende:
Dat heb ik eens toegevoegd & nu komt iets heel vreemds:

Nu krijg ik niet meer de foutmelding: 'Arguments are of the wrong type...etc', maar die wat ik net aan heb gemaakt.

Wat nu echt het hele vreemde is: Die foutmelding staat in een andere unit. Die andere unit (om de tabel te bekijken) staat ook niet in m'n 'uses' lijstje van de 'append'-unit.

Het enige wat ikzelf heb toegevoegd aan 't uses-lijstje van zowel de 'append'- als de 'view'-unit is:
uses uDataModule.

Weet iemand waar dit aan kan liggen?
ik zou maar eens beginnen de KaDaoDatabase spulletjes (freeware!!!) te downen van Kiril Antonov's Delphi Warrior site (iets van www.pari.bg)

kun je heel veel fouten al meteen omzeilen...

Cogito Ergo Credo


Verwijderd

Probeer het volgende maar eens:
code:
--------------------------------------------------------------------------------
if dm.ADOTableMANUFACTURER.Active then
dm.ADOTableMANUFACTURER.Locate(IntToStr(ManufacturerID), DBEditViewBrochureProductManufacturerID.Text, []);
--------------------------------------------------------------------------------

  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Dat ManufacturerID in Locate is geen variabele, maar de naam van 't veld.

Locate('Naam van 't veld waarin je wilt zoeken', variabele waar je op wilt zoeken, [locatieopties]).
ik zou maar eens beginnen de KaDaoDatabase spulletjes (freeware!!!) te downen van Kiril Antonov's Delphi Warrior site (iets van www.pari.bg)
kun je heel veel fouten al meteen omzeilen...
Helaas is dat geen optie. Wel bedankt voor de link (is al meteen aan de favo's toegevoegd). Ik werk liever met standaard Delphi componentjes ivm vervolgopdracht door waarschijnlijk iemand anders.

Verwijderd

Ik weet niet of je op de hoogte bent van de bug tussen delphi 5 en Ado. Deze is als volgt te verhelpen:

Een overzicht van de downloads:
http://www.borland.com/devsupport/delphi/

Er zijn nogal wat problemen met Delphi 5 en ADO:
http://www.borland.com/devsupport/d...tabase.html#ado
vrijwel alle zijn verholpen in Update Pack 1.

De andere update is specifiek voor ADO 2.6:
quote:
--------------------------------------------------------------------------------
MDAC v2.6 "Either EOF or BOF is true." error with ADOExpress

This update corrects a known issue which affects certain ADOExpress applications when running against MDAC 2.6. Most commonly, the following error is generated when closing an empty dataset: "Either EOF or BOF is True, or the current record has been deleted. Requested operation requires a current record". The same error may also occur when canceling an edit operation. Affected applications should be recompiled after the update is installed.

--------------------------------------------------------------------------------

MIsschien is dit de oplossing.. ander kadao maar downloaden

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op maandag 17 juni 2002 15:37 schreef Dinand_Jo het volgende:

MIsschien is dit de oplossing.. ander kadao maar downloaden
KaDao rulez, ik gebruik 't al een jaar en ben er zelfs mee afgestudeerd (was wellicht met ADO alleen niet gelukt ;))

Neem van mij aan: gebruik KaDao!!!

hier is de link:

http://www.delphi.pari.bg/

Cogito Ergo Credo


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Ik zal eens goed naar dat KaDao kijken in m'n vervolgopdrachten, maar ivm tijdgebrek moet ik 't nu maar met de gewone ADO componenten doen.

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op dinsdag 18 juni 2002 15:53 schreef Jordy het volgende:
Ik zal eens goed naar dat KaDao kijken in m'n vervolgopdrachten, maar ivm tijdgebrek moet ik 't nu maar met de gewone ADO componenten doen.
geloof me KaDao installen is een fluitje van een cent en anders mail je maar voor support: j.a.korten@student.utwente.nl

scheelt je meer tijd dan dat je door blijft prutsen...

Cogito Ergo Credo


  • Da_Jackal
  • Registratie: Juni 2000
  • Laatst online: 07-08 17:15
Jopiek > Bedankt voor de hulp. Mocht 't nodig zijn, dan neem ik contact met je op.

Ik heb 't probleem opgelost door een MasterSource & een MasterField te gebruiken.
Pagina: 1