login  Naam:   Wachtwoord: 
Registreer je!
 Forum

InvaledCastException was unhandled

Offline P7RR3 - 23/02/2012 23:46
Avatar van P7RR3Lid Ik maak gebruik van een datagridview waarin ik gegevens kan toevoegen en verwijderen aan een database. Wanneer ik een item toevoeg wordt automatisch een ID toegevoegd aan mijn database, nu stuit ik op het volgende probleem:

Wanneer ik items ga verwijderen uit mijn database (steeds een ID minder in mijn database) en ik delete bijvoorbeeld mijn database met daarin 10 ID's. Welnu als ik mijn eerste ID (ID1) ook verwijder (wat als gevolg heeft dat ik in mijn database geen ID's meer heb) krijg ik volgende foutmelding:

InvalidCastException was unhandled (De conversie van type DBNull naar integer is ongeldig)

Plaatscode: 141644

Zoals ik het probeer te analyseren: de datagridview zou geen error meer mogen geven wanneer ik ID1 ook verwijder, dus maw wanneer mijn datagridview leeg is zou hij moeten vragen of ik een item wil bijvoegen.

Alvast bedankt!

2 antwoorden

Gesponsorde links
Offline Koen - 24/02/2012 00:09
Avatar van Koen PHP expert Wanneer die query wordt uitgevoerd en er zijn geen rijen meer in die tabel, stuurt de database een null-value door aangezien er geen hoogste ID meer is (DBNull != Null trouwens). Jouw programma houdt daar geen rekening mee en verwacht blindelings een integer.

Een oplossing voor jouw probleem zou zijn:

1. Nakijken of verwijderdeId gelijk is aan 1.
2. Als dat het geval is, kijk je met een SQL Query "COUNT" (of DataGridView.RowCount dacht ik) of er nog wel rijen aanwezig zijn. Is dat niet het geval, dan moet je de for-lus niet meer uitvoeren en kan je dus Exit Sub of Return doen.

Maar even daar buiten gekeken:

Waarom doe je dit zo? Het achterliggende ID is dat het uniek is en blijft, gekoppeld aan één bepaalde rij. Jij laat deze waarden elke keer opschuiven wanneer er een item verdwijnt... Er bestaan verschillende manieren om een id automatisch op te laten tellen zodat jij er geen rekening mee moet houden (auto increment, sequences, autonummering), dit hangt af van de database die je gebruikt.
Offline P7RR3 - 24/02/2012 01:16 (laatste wijziging 24/02/2012 01:26)
Avatar van P7RR3 Lid Waarom doe ik dit zo? Omdat dit voor mij de meest logische manier was, het klopt idd wat je zegt wat je zegt betreffende de ID's, maar ik ben echt niet thuis in het programmeren dus voor mij is het vrijuit chinees wat je mij probeert bij te brengen doe mijn best om het te begrijpen maar snap het niet echt 

Oplossing: Plaatscode: 141652

EDIT: probleem is momenteel opgelost, maar zoals jij zegt, met het toevoegen van mijn 2de item, geeft hij een error betreffende 'duplicate errors'

Plaatscode: 141651

bij lijn 4: The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.194s