Toon posts:

[BCB+ADO] Null values in Access XP database *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Feiten:
Borland c++ 6.0
Access XP database
ADODB connect

Ik heb een database met 3 velden:
id, numeriek, auto_nummering
testA, tekst, Mag null zijn
testB, tekst, Mag null zijn

Ik heb de volgende code om een parameter toe te voegen...
code:
1
2
3
4
  Query->Parameters->Add();
  Query->Parameters->Items[count]->DataType = type;
  Query->Parameters->Items[count]->Value = value;
  Query->Parameters->Items[count]->Name = name;

Deze code werkt op zich goed, maar op het moment dat value Null of ""(leeg) is dan krijg ik de volgende foutmelding: "Application uses a value of the wrong type for the current operation."
Wat ik wil is dus gewoon een veld de waarde null of "" (leeg) geven.
Bovenstaande code werkt wel goed met een MS SQL database....

Ik heb overal gezocht maar kon 't niet vinden...
Iemand misschien een idee????

Verwijderd

Probeer de lege string eens te vervangen door Null (niet als string, dus zonder quotes) ...

Edit:
Overigens weet ik dat in Access 2K er behalve de optie 'Mag Null zijn' ook een optie 'Mag leeg zijn' o.i.d. zit. Als je die op 'Nee' hebt staan, mag je wel Null maar geen lege string toevoegen, dus kijk daar ook eens naar.

[ Voor 57% gewijzigd door Verwijderd op 08-06-2003 19:42 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

Je kunt de Clear method van een TField gebruiken. Wat misschien makkelijker is, is je Insert query zodanig aanpassen dat de velden automatisch al nul zijn:
SQL:
1
2
INSERT INTO MijnTabel (testA, testB)
VALUES (Null, Null)
Voor het autonummeringveld hoef je geen veldwaarde op te geven, dat doet de database automatisch voor je.

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
Verwijderd schreef op 08 June 2003 @ 18:59:
Probeer de lege string eens te vervangen door Null (niet als string, dus zonder quotes) ...

Edit:
Overigens weet ik dat in Access 2K er behalve de optie 'Mag Null zijn' ook een optie 'Mag leeg zijn' o.i.d. zit. Als je die op 'Nee' hebt staan, mag je wel Null maar geen lege string toevoegen, dus kijk daar ook eens naar.
Dat was ik vergeten te zeggen, maar als ik doe:
code:
1
2
3
4
5
6
7
8
if (value.isEmpty())
{
  Query->Parameters->Items[count]->Value = Null;
}
else
{
  Query->Parameters->Items[count]->Value = value;
}


Dan werkt het wel maar komt er overal '1' in te staan :(

[ Voor 7% gewijzigd door Verwijderd op 08-06-2003 23:31 ]


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

Verwijderd schreef op 08 June 2003 @ 23:29:
[...] Dan werkt het wel maar komt er overal '1' in te staan :(
Wat werkt dan wel? En welke van de beide regels in de if-statement wordt dan uitgevoerd?

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
tomatoman schreef op 08 juni 2003 @ 23:59:
[...]
Wat werkt dan wel? En welke van de beide regels in de if-statement wordt dan uitgevoerd?
de 1e regel wordt uitgevoerd indien value Null is ...
de 2e regel als value != Null is...

In de tabel heb ik meerdere velden... De velden waar ik dus een waarde voor heb opgegeven worden dus gewoon opgeslagen en bij de andere velden wordt een '1' in de database gezet :?

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

Verwijderd schreef op 09 June 2003 @ 00:03:
[...]
De velden waar ik dus een waarde voor heb opgegeven worden dus gewoon opgeslagen en bij de andere velden wordt een '1' in de database gezet :?
Bedoel je dit als een vraag? Zo ja, dan moet je maar eens gaan debuggen. Zo nee, probeer dan eens de AsString property van de bewuste velden te gebruiken in plaats van de Value property.

Beetje een open deur: weet je zeker dat ze niet 'toevallig' allemaal de waarde '1' als tekst bevatten?

Een goede grap mag vrienden kosten.


Verwijderd

Topicstarter
tomatoman schreef op 09 June 2003 @ 01:29:
[...]
Bedoel je dit als een vraag? Zo ja, dan moet je maar eens gaan debuggen. Zo nee, probeer dan eens de AsString property van de bewuste velden te gebruiken in plaats van de Value property.

Beetje een open deur: weet je zeker dat ze niet 'toevallig' allemaal de waarde '1' als tekst bevatten?
Nee, sorry dat weet ik 100% zeker... 'k vraag het niet zomaar hier ;)

  • Ti_Uhl
  • Registratie: Mei 2003
  • Laatst online: 19-09-2012
ik heb ook al zo'n probleem gehad met acces maar dan in visual basic, is er geen methode vergelijkbaar met de IsNull() in vb, anders controleer je daar op voor je je bewerkingen gaat doen.

Ik hoop dat dat helpt want ik heb nog nooit met Borland gewerkt.

Greetz TI_Uhl

Verwijderd

Topicstarter
Ti_Uhl schreef op 09 juni 2003 @ 10:33:
ik heb ook al zo'n probleem gehad met acces maar dan in visual basic, is er geen methode vergelijkbaar met de IsNull() in vb, anders controleer je daar op voor je je bewerkingen gaat doen.

Ik hoop dat dat helpt want ik heb nog nooit met Borland gewerkt.

Greetz TI_Uhl
Ik kan van te voren wel controleren of de waarde Null is, dat is ook niet het probleem... Het probleem is dat ik een Null waarde in de database wil stoppen.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 01:25

Tomatoman

Fulltime prutser

C++:
1
2
3
4
5
6
7
8
if (value.isEmpty())
{
  Query->Parameters->Items[count]->Clear();
}
else
{
  Query->Parameters->Items[count]->Value = value;
}

Een goede grap mag vrienden kosten.

Pagina: 1