🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
23 messages
23 total messages Started by StriKe Sun, 14 May 2006 01:54
null waarden in datatable
#714
Author: StriKe
Date: Sun, 14 May 2006 01:54
36 lines
2327 bytes
Hallo,

Ik heb een VB.NET applicatie waarin ik gegevens uit een database haal 
(Access), deze in een datatable stop en via die datatable in een 
datagrid laat tonen op het scherm.

Via een formulier kunnen de gegevens in die datatable worden gewijzigd.

Vanaf het moment dat de geselecteerde cel verandert in de datagrid voer 
ik een functie uit die automatisch alle inhoud van het formulier 
(waarmee dus de datatable te bewerken is) terugschrijft naar de 
datatable.

Probleem is echter dat ik voor sommige kolommen in mijn datatable 
null-waarden toelaat.

Wanneer ik deze dan wens op te vullen met een 'echte waarde', 
bijvoorbeeld een string of integer lukt dat niet, ik krijg dan dit:

De conversie van de tekenreeks Er is een fout opgetreden naar het type 
Integer is niet geldig.

Het 'bijwerken' van de datatable met de velden uit het formulier 
gebeurt als volgt:

dr(0)(5) = CInt(TtxtDuur.Text)

Een oplossing zou natuurlijk kunnen zijn om mijn database verder aan te 
vullen en geen null-waarden meer toe te laten, maar kan het ook anders?


-- 
Groeten,
StriKe

http://www.internetfreakz.be
Re: null waarden in datatable
#715
Author: John Bokma
Date: Sun, 14 May 2006 04:15
14 lines
1318 bytes
StriKe <strike_usenet@internetfreakz.be.invalid> wrote:

> De conversie van de tekenreeks Er is een fout opgetreden naar het type 
> Integer is niet geldig.

Is dat de letterlijke foutmelding? 

En geeft de database deze fout, of je programma zelf?

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#716
Author: Jurjen de Groot
Date: Sun, 14 May 2006 06:41
49 lines
2464 bytes
Strike

Je kan een lege string niet converteren naar Cint, het is beter om voordat 
je een Cint doet, een aantal controles te doen:

if TtxtDuur.Text.length > 0 AndAlso IsNumeric(TtxtDuur.Text) Then dr(0)(5) = 
CInt(TtxtDuur.Text)

Jurjen

"StriKe" <strike_usenet@internetfreakz.be.invalid> wrote in message 
news:mn.70ea7d65b632223d.48459@internetfreakz.be.invalid...
> Hallo,
>
> Ik heb een VB.NET applicatie waarin ik gegevens uit een database haal 
> (Access), deze in een datatable stop en via die datatable in een datagrid 
> laat tonen op het scherm.
>
> Via een formulier kunnen de gegevens in die datatable worden gewijzigd.
>
> Vanaf het moment dat de geselecteerde cel verandert in de datagrid voer ik 
> een functie uit die automatisch alle inhoud van het formulier (waarmee dus 
> de datatable te bewerken is) terugschrijft naar de datatable.
>
> Probleem is echter dat ik voor sommige kolommen in mijn datatable 
> null-waarden toelaat.
>
> Wanneer ik deze dan wens op te vullen met een 'echte waarde', bijvoorbeeld 
> een string of integer lukt dat niet, ik krijg dan dit:
>
> De conversie van de tekenreeks Er is een fout opgetreden naar het type 
> Integer is niet geldig.
>
> Het 'bijwerken' van de datatable met de velden uit het formulier gebeurt 
> als volgt:
>
> dr(0)(5) = CInt(TtxtDuur.Text)
>
> Een oplossing zou natuurlijk kunnen zijn om mijn database verder aan te 
> vullen en geen null-waarden meer toe te laten, maar kan het ook anders?
>
>
> -- 
> Groeten,
> StriKe
>
> http://www.internetfreakz.be
>
> 
Re: null waarden in datatable
#717
Author: StriKe
Date: Sun, 14 May 2006 09:04
28 lines
2023 bytes
> Strike
>
> Je kan een lege string niet converteren naar Cint, het is beter om voordat je 
> een Cint doet, een aantal controles te doen:
>
> if TtxtDuur.Text.length > 0 AndAlso IsNumeric(TtxtDuur.Text) Then dr(0)(5) = 
> CInt(TtxtDuur.Text)
>
> Jurjen

Dat is inderdaad iets dat werkt :
Ik vraag me nu wel af: wat als het datatype van je veld niet numeric is 
maar gewoon een string?

Ik heb in de documentatie gekeken, en iets als "IsText" bestaat 
blijkbaar niet?

IsArray Function | IsDate Function | IsDBNull Function | IsError 
Function | IsNothing Function | IsReference Function | Object Data Type | 
TypeName Function zijn de enige functies die ik gevonden heb.

Of volstaat het om bij een string gewoon de length te controleren?

-- 
Groeten,
StriKe

http://www.internetfreakz.be
Re: null waarden in datatable
#718
Author: StriKe
Date: Sun, 14 May 2006 09:05
18 lines
1665 bytes
> StriKe <strike_usenet@internetfreakz.be.invalid> wrote:
>
>> De conversie van de tekenreeks Er is een fout opgetreden naar het type 
>> Integer is niet geldig.
>
> Is dat de letterlijke foutmelding? 

Dat is inderdaad de fout zoals ik ze krijg

> En geeft de database deze fout, of je programma zelf?

Hoe kan ik dat onderscheid maken ?

-- 
Groeten,
StriKe

http://www.internetfreakz.be
Re: null waarden in datatable
#719
Author: John Bokma
Date: Sun, 14 May 2006 09:20
21 lines
1657 bytes
StriKe <strike_usenet@internetfreakz.be.invalid> wrote:

> Dat is inderdaad iets dat werkt :
> Ik vraag me nu wel af: wat als het datatype van je veld niet numeric
> is maar gewoon een string?
> 
> Ik heb in de documentatie gekeken, en iets als "IsText" bestaat 
> blijkbaar niet?

"12341" is text, en "" ook :-)

> Of volstaat het om bij een string gewoon de length te controleren?

Een string met lengte 0 is leeg, je zal dan een NULL in je database willen 
stoppen.

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#720
Author: StriKe
Date: Sun, 14 May 2006 09:49
26 lines
2172 bytes
> StriKe <strike_usenet@internetfreakz.be.invalid> wrote:
>
> "12341" is text, en "" ook :-)

Dus als ik het nu goed begrijp doet IsNumeric eigenlijk niets anders 
dan zien of de Ascii waarden van elk teken in de 'numerieke range' 
liggen?

>> Of volstaat het om bij een string gewoon de length te controleren?
>
> Een string met lengte 0 is leeg, je zal dan een NULL in je database willen 
> stoppen.

Ik heb dit geschreven:

If TtxtUitgever.Text.Length > 0 Then dr(0)(6) = TtxtUitgever.Text

Op het eerste zicht lijkt dit ook te werken en zou het dat in theorie 
volgens jou ook moeten doen? Of hoe zou ik het alsnog beter kunnen 
formuleren?

-- 
Groeten,
StriKe

http://www.internetfreakz.be
Re: null waarden in datatable
#721
Author: Peter
Date: Sun, 14 May 2006 10:13
57 lines
2764 bytes
StriKe wrote:
> Hallo,
> 
> Ik heb een VB.NET applicatie waarin ik gegevens uit een database haal 
> (Access), deze in een datatable stop en via die datatable in een 
> datagrid laat tonen op het scherm.
> 
> Via een formulier kunnen de gegevens in die datatable worden gewijzigd.
> 
> Vanaf het moment dat de geselecteerde cel verandert in de datagrid voer 
> ik een functie uit die automatisch alle inhoud van het formulier 
> (waarmee dus de datatable te bewerken is) terugschrijft naar de datatable.
> 
> Probleem is echter dat ik voor sommige kolommen in mijn datatable 
> null-waarden toelaat.
> 
> Wanneer ik deze dan wens op te vullen met een 'echte waarde', 
> bijvoorbeeld een string of integer lukt dat niet, ik krijg dan dit:
> 
> De conversie van de tekenreeks Er is een fout opgetreden naar het type 
> Integer is niet geldig.
> 
> Het 'bijwerken' van de datatable met de velden uit het formulier gebeurt 
> als volgt:
> 
> dr(0)(5) = CInt(TtxtDuur.Text)
> 
> Een oplossing zou natuurlijk kunnen zijn om mijn database verder aan te 
> vullen en geen null-waarden meer toe te laten, maar kan het ook anders?
> 
> 


Als ik het goed begrijp, wil je bij een lege string ("") een null-waarde 
  wegschrijven naar de database.

Een check zou moeten volstaan?

If txtDuur.text = "" then
	dr(0)(5) = dbnull.value
else
	dr(0)(5) = CInt(TtxtDuur.Text)
end if

of misschien een try... catch?

try
	dr(0)(5) = CInt(TtxtDuur.Text)
catch
	dr(0)(5) = dbnull.value
end try

(ongetest overigens.. Ik ga er vanuit dat dbnull bestaat aangezien er 
een IsDbNull functie is)

mvg,
Peter
Re: null waarden in datatable
#722
Author: StriKe
Date: Sun, 14 May 2006 10:20
40 lines
2059 bytes
> Als ik het goed begrijp, wil je bij een lege string ("") een null-waarde   
> wegschrijven naar de database.

Inderdaad

> Een check zou moeten volstaan?
>
> If txtDuur.text = "" then
> 	dr(0)(5) = dbnull.value
> else
> 	dr(0)(5) = CInt(TtxtDuur.Text)
> end if

Jouw code doet 'ongeveer' hetzelfde als deze :
If TtxtDuur.Text.Length > 0 AndAlso IsNumeric(TtxtDuur.Text) Then 
dr(0)(5) = CInt(TtxtDuur.Text)

als ik het goed begrijp?

Aangezien er standaard al 'null' aanwezig is, lijkt het me overbodig om 
nog eens dbnull.value toe te voegen/te vervangen?

Of is daar wel een goede reden voor?

> of misschien een try... catch?
>
> try
> 	dr(0)(5) = CInt(TtxtDuur.Text)
> catch
> 	dr(0)(5) = dbnull.value
> end try

Dat werkt inderdaad ook, het zou dus volgens jou 'identiek' dezelfde 
werking moeten hebben dan de if then else?

-- 
Groeten,
StriKe

http://www.internetfreakz.be
Re: null waarden in datatable
#723
Author: JeroenV
Date: Sun, 14 May 2006 13:02
36 lines
2520 bytes
StriKe wrote:

>> StriKe <strike_usenet@internetfreakz.be.invalid> wrote:
>>
>> "12341" is text, en "" ook :-)
> 
> Dus als ik het nu goed begrijp doet IsNumeric eigenlijk niets anders
> dan zien of de Ascii waarden van elk teken in de 'numerieke range'
> liggen?

Zoiets ja. Het ziet of de string probleemloos naar een getal kan worden
omgevormd.

>>> Of volstaat het om bij een string gewoon de length te controleren?
>>
>> Een string met lengte 0 is leeg, je zal dan een NULL in je database
>> willen stoppen.
> 
> Ik heb dit geschreven:
> 
> If TtxtUitgever.Text.Length > 0 Then dr(0)(6) = TtxtUitgever.Text
> 
> Op het eerste zicht lijkt dit ook te werken en zou het dat in theorie
> volgens jou ook moeten doen? Of hoe zou ik het alsnog beter kunnen
> formuleren?

Het werkt wel, maar IMO is dat niet correct. NULL is niet hetzelfde als een
lege string. NULL betekent "ik weet de waarde niet, het kan vanalles zijn",
een lege string betekent "ik weet de waarde, en die is leeg". Een wereld
van verschil. Als je wil aanduiden dat een string leeg is schrijf je beter
een lege string weg i.p.v. NULL.

-- 
JeroenV
<http://www.briachons.org>
<http://www.jabberweb.be>
Re: null waarden in datatable
#724
Author: Tim Van Wassenhove
Date: Sun, 14 May 2006 16:01
15 lines
1930 bytes
On 2006-05-14, JeroenV <jeroenv@telenet.invalid> wrote:
> NULL betekent "ik weet de waarde niet, het kan vanalles zijn",
> een lege string betekent "ik weet de waarde, en die is leeg". Een wereld
> van verschil. Als je wil aanduiden dat een string leeg is schrijf je beter
> een lege string weg i.p.v. NULL.

Imho dient een database om dingen bij te houden waarvan je weet dat ze
juist/bekend zijn, dus is het bewaren van NULL waarden vrij zinloos.
(In de praktijk heb ik dan al wel mogen ervaren dat de meeste sql dbms beter 
presteren met een grote niet-genormaliseerde tabel dan met een join over 
2 genormaliseerde tabellen).

-- 
Met vriendelijke groeten,
Tim Van Wassenhove <http://timvw.madoka.be>
Re: null waarden in datatable
#725
Author: Peter
Date: Sun, 14 May 2006 17:32
65 lines
3370 bytes
StriKe wrote:
>> Als ik het goed begrijp, wil je bij een lege string ("") een 
>> null-waarde   wegschrijven naar de database.
> 
> 
> Inderdaad
> 
>> Een check zou moeten volstaan?
>>
>> If txtDuur.text = "" then
>>     dr(0)(5) = dbnull.value
>> else
>>     dr(0)(5) = CInt(TtxtDuur.Text)
>> end if
> 
> 
> Jouw code doet 'ongeveer' hetzelfde als deze :
> If TtxtDuur.Text.Length > 0 AndAlso IsNumeric(TtxtDuur.Text) Then 
> dr(0)(5) = CInt(TtxtDuur.Text)
> 
> als ik het goed begrijp?

Nee, bovenstaande code doet extra checks (beter), maar schrijft niet 
altijd iets weg.  Indien het een nieuw record betreft, zal een niet 
gespecifeerd veld wellicht dbnull bevatten. Bij een update wordt de oude 
waarde wellicht behouden (ipv dat er dbnull wordt ingeschreven.
De eerste code probeert altijd iets weg te schrijven naar de database. 
Bij lege string een dbnull, bij numerieke waarde de waarde, en anders 
genereer je een exception.

Trouwens, een dbnull wegschrijven naar een database wordt vziw niet vaak 
gedaan. Ik zou de gebruiker eerder verplichten alle velden in te vullen 
vooraleer een record te updaten.

> 
> Aangezien er standaard al 'null' aanwezig is, lijkt het me overbodig om 
> nog eens dbnull.value toe te voegen/te vervangen?

Bij een update hoeft er geen 'null' aanwezig te zijn.

> 
> Of is daar wel een goede reden voor?
> 
>> of misschien een try... catch?
>>
>> try
>>     dr(0)(5) = CInt(TtxtDuur.Text)
>> catch
>>     dr(0)(5) = dbnull.value
>> end try
> 
> 
> Dat werkt inderdaad ook, het zou dus volgens jou 'identiek' dezelfde 
> werking moeten hebben dan de if then else?

Try ... catch is een totaal ander mechanisme dan een if-else 
constructie. Try-catch is in feite een error-handling mechanisme dat 
hier een beetje wordt 'misbruikt'. Als een fout gegenereerd wordt in het 
try-block wordt die opgevangen en afgehandeld in het catch block.

Google eens op try catch finally. Verplichte lectuur als je .NET 
programmeert.

mvg,
Peter
Re: null waarden in datatable
#726
Author: John Bokma
Date: Sun, 14 May 2006 18:00
52 lines
3170 bytes
StriKe <strike_usenet@internetfreakz.be.invalid> wrote:

>> StriKe <strike_usenet@internetfreakz.be.invalid> wrote:
>>
>> "12341" is text, en "" ook :-)
> 
> Dus als ik het nu goed begrijp doet IsNumeric eigenlijk niets anders 
> dan zien of de Ascii waarden van elk teken in de 'numerieke range' 
> liggen?

Het doet precies zoals het heet: het kijkt of de string een getal is (vaak 
in een aantal presentatievormen, dus met komma, wetenschappelijke notatie, 
etc).

Een lege string is geen getal. Aangezien je NULL waarde toestaat in je 
tabel ben ik er vanuit gegaan dat NULL in dit geval geen waarde/waarde 
onbekend betekend, en heb ik "" gelijk gesteld aan NULL.

> Ik heb dit geschreven:
> 
> If TtxtUitgever.Text.Length > 0 Then dr(0)(6) = TtxtUitgever.Text
> 
> Op het eerste zicht lijkt dit ook te werken en zou het dat in theorie 
> volgens jou ook moeten doen? Of hoe zou ik het alsnog beter kunnen 
> formuleren?

Wat mij het meest zinnige lijkt is:

- als NULL mag, en "geen waarde/onbekend" is, en ingevoerd mag worden, zou 
ik "" als NULL behandelen, dus als de lengte 0 is (of de string is gelijk 
aan "") zou ik NULL in de database stoppen. Nu doe je niets. Wat neerkomt 
op: de gebruiker wist de waarde 5 uit een veld, en verhip, de volgende 
keer is die waarde terug.

Als ""/NULL *niet* ingevoerd mag worden door de gebruiker, dan moet je 
natuurlijk dat afvangen.

- Als de string een lengte heeft, dan moet je controleren of het een 
geldige waarde is, dus: is het een getal *en* valt het getal binnen het 
toegestane bereik. Zoniet zou je weer naar de gebruiker moeten klagen dat 
een ongeldige waarde is ingegeven. Sommige UI libraries maken het mogelijk 
om in, b.v. een invoerveld, al beperkingen op te leggen, b.v. je mag 1 tot 
5 cijfers invoeren en verder niks. Of als je "leeg" toestaat: je mag 0 tot 
5 cijfers invoeren en verder niks.



-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#727
Author: John Bokma
Date: Sun, 14 May 2006 18:06
37 lines
2766 bytes
JeroenV <jeroenv@telenet.invalid> wrote:

> Het werkt wel, maar IMO is dat niet correct.

Dat hangt af van wat NULL doet in het huidige model. Als NULL gelijk staat 
aan geen waarde gegeven/waarde onbekend, hoe kan de gebruiker dat 
invoeren? Ik zou zeggen: vakje leeglaten. Dat het intern in de applicatie 
een lege string is maakt niet uit. 

> NULL is niet hetzelfde als een lege string.

Klopt, maar het kan wel hetzelfde betekenen voor de gebruiker: een leeg 
vakje (lege string) is dan identiek met:

> NULL betekent "ik weet de waarde niet, het kan
> vanalles zijn", een lege string betekent "ik weet de waarde, en die is
> leeg". Een wereld van verschil. Als je wil aanduiden dat een string
> leeg is schrijf je beter een lege string weg i.p.v. NULL.

In een numeriek database veld? Lijkt mij niet echt handig. Er zijn twee 
nivos met elk hun eigen model: de database met: getal of NULL, en de user 
interface met: getal of leeg vakje. In dit geval is het geen enkel 
probleem om leeg vakje = geen enkel getal, gelijk te stellen aan NULL. 

Wat je meestal zeker niet wilt is of de gebruiker NULL in laten tikken, of 
in de database getallen als strings op gaan slaan omdat het dan 
overeenkomt met wat de gebruiker ziet.

Als het om pure string (niet hier dus) ingave gaat kan het inderdaad zijn 
dat een onderscheid wil maken tussen leeg en niet gegeven, en dat een lege 
string en NULL dan inderdaad twee verschillende toestanden zijn.

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#728
Author: John Bokma
Date: Sun, 14 May 2006 18:10
33 lines
2505 bytes
Tim Van Wassenhove <timvw@users.sourceforge.net> wrote:

> On 2006-05-14, JeroenV <jeroenv@telenet.invalid> wrote:
>> NULL betekent "ik weet de waarde niet, het kan vanalles zijn",
>> een lege string betekent "ik weet de waarde, en die is leeg". Een
>> wereld van verschil. Als je wil aanduiden dat een string leeg is
>> schrijf je beter een lege string weg i.p.v. NULL.
> 
> Imho dient een database om dingen bij te houden waarvan je weet dat ze
> juist/bekend zijn,

onbekend/niet gegeven is ook een ding dat juist kan zijn. Een voorbeeld: 
datum van overlijden.

> dus is het bewaren van NULL waarden vrij zinloos.

Vandaar dat ik geen database ken die het niet ondersteund.. Ook in 
programmeertalen heb je iets als undef. 

> (In de praktijk heb ik dan al wel mogen ervaren dat de meeste sql dbms
> beter presteren met een grote niet-genormaliseerde tabel dan met een
> join over 2 genormaliseerde tabellen).

Voor nogal wat algoritmes zijn er worst case situaties te bedenken. In dit 
vak is het de bedoeling door te hebben wanneer iets wel kan, en wanneer 
niet inplaats van "vuistregeltjes" op te stellen (zoals de klassieke: GOTO 
is altijd fout).

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#729
Author: John Bokma
Date: Sun, 14 May 2006 18:13
36 lines
2042 bytes
Peter <spetrelly@pandora.be> wrote:

> Als ik het goed begrijp, wil je bij een lege string ("") een
> null-waarde 
>   wegschrijven naar de database.
> 
> Een check zou moeten volstaan?
> 
> If txtDuur.text = "" then
>      dr(0)(5) = dbnull.value
> else
>      dr(0)(5) = CInt(TtxtDuur.Text)
> end if
> 
> of misschien een try... catch?
> 
> try
>      dr(0)(5) = CInt(TtxtDuur.Text)
> catch
>      dr(0)(5) = dbnull.value
> end try

Exceptions zijn voor uitzonderingsgevallen. Als "" een toegestane waarde 
is zou ik zeker geen exception gebruiken om het af te vangen.

Daarnaast, het is altijd het beste om voor elke vorm van ingave een 
correcte afhandeling te maken. Dus de 1e oplossing is IMO alleen juist als 
de text slechts of een Int of leeg kan zijn. Wat je niet wilt is dat de 
gebruiker "Hallo" in kan tikken, en dat dat op het scherm staat, terwijl 
in de database NULL opgeslagen werd.

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#730
Author: John Bokma
Date: Sun, 14 May 2006 18:14
19 lines
1766 bytes
StriKe <strike_usenet@internetfreakz.be.invalid> wrote:

> Aangezien er standaard al 'null' aanwezig is, lijkt het me overbodig
> om nog eens dbnull.value toe te voegen/te vervangen?

Wat moet er gebeuren als de gebruiker 5 ingeeft, en vervolgens het vakje 
weer leeg maakt?

> Dat werkt inderdaad ook, het zou dus volgens jou 'identiek' dezelfde 
> werking moeten hebben dan de if then else?

Zie mijn andere reaktie. IMNSHO gebruik je exceptions niet voor normale 
control flow.

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#731
Author: John Bokma
Date: Sun, 14 May 2006 18:19
38 lines
2247 bytes
Peter <spetrelly@pandora.be> wrote:

> Trouwens, een dbnull wegschrijven naar een database wordt vziw niet vaak 
> gedaan. Ik zou de gebruiker eerder verplichten alle velden in te vullen 
> vooraleer een record te updaten.

Zie mijn voorbeeld: overleden op:

Wat doen "jullie" eigenlijk met databases? De een roept dat NULL zinloos 
is, de ander roept dat wegschrijven van NULL niet vaak gedaan wordt :-D.

> Try ... catch is een totaal ander mechanisme dan een if-else 
> constructie. Try-catch is in feite een error-handling mechanisme dat 
> hier een beetje wordt 'misbruikt'.

Yup, en niet een beetje overigens :-D.

> Google eens op try catch finally. Verplichte lectuur als je .NET 
> programmeert.

En Java, en Perl, en Python, enz. Met die 1e is het IIRC zelfs meer dan 
verplichte lectuur (IIRC een van de Java v.s. .NET argumenten is dat met 
Java excepties meestal afgehandeld *moeten* worden, wat heerlijke code 
als:

try {

.....

} catch ( Exception e ) { /* ignore */ }

opleverd :-(

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#737
Author: Peter
Date: Mon, 15 May 2006 17:36
35 lines
2358 bytes
John Bokma wrote:
> Peter <spetrelly@pandora.be> wrote:
> 
> 
>>Trouwens, een dbnull wegschrijven naar een database wordt vziw niet vaak 
>>gedaan. Ik zou de gebruiker eerder verplichten alle velden in te vullen 
>>vooraleer een record te updaten.
> 
> 
> Zie mijn voorbeeld: overleden op:
> 
> Wat doen "jullie" eigenlijk met databases? De een roept dat NULL zinloos 
> is, de ander roept dat wegschrijven van NULL niet vaak gedaan wordt :-D.
> 

Ik gebruik databases voornamelijk voor logging en het inladen van 
parameters (industriele bedrijfssoftware). Hetgeen gelogd wordt is 
meestal wel bekend :-)

Maar je hebt gelijk. Er zijn legio toepassingen waar de dbnull waarde 
kan weggeschreven worden.

> 
>>Try ... catch is een totaal ander mechanisme dan een if-else 
>>constructie. Try-catch is in feite een error-handling mechanisme dat 
>>hier een beetje wordt 'misbruikt'.
> 
> 
> Yup, en niet een beetje overigens :-D.

Tuurlijk. Zou het nooit zo implementeren. Had daar trouwens wel reactie 
over verwacht.

mvg,
Peter
Re: null waarden in datatable
#738
Author: Arnold Hendriks
Date: Mon, 15 May 2006 17:40
7 lines
1733 bytes
"John Bokma" <john@castleamber.com> wrote in message 
news:Xns97C385FC1F82Fcastleamber@130.133.1.4...
> Tim Van Wassenhove <timvw@users.sourceforge.net> wrote:
>> dus is het bewaren van NULL waarden vrij zinloos.
> Vandaar dat ik geen database ken die het niet ondersteund..
Bijvoorbeeld Oracle? Of specifieker: die ziet het verschil niet tussen 
string '' en een null string.
Re: null waarden in datatable
#739
Author: John Bokma
Date: Mon, 15 May 2006 18:12
30 lines
2139 bytes
Peter <spetrelly@pandora.be> wrote:

> John Bokma wrote:
>> Peter <spetrelly@pandora.be> wrote:

[..]

>> Wat doen "jullie" eigenlijk met databases? De een roept dat NULL
>> zinloos is, de ander roept dat wegschrijven van NULL niet vaak gedaan
>> wordt :-D. 
> 
> Ik gebruik databases voornamelijk voor logging en het inladen van 
> parameters (industriele bedrijfssoftware). Hetgeen gelogd wordt is 
> meestal wel bekend :-)

Yup, ik gebruik ook niet altijd NULL, maar soms wil je onderscheid maken 
tussen een lege string en onbekend. Of een getal en onbekend. En dan wil 
je niet een speciale waarde gaan verzinnen (b.v. 99,999 voor getal wat ik 
herinner uit een bepaald logging pakket :-) )

> Tuurlijk. Zou het nooit zo implementeren. Had daar trouwens wel
> reactie over verwacht.

:-)

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#740
Author: John Bokma
Date: Mon, 15 May 2006 18:15
24 lines
2181 bytes
"Arnold Hendriks" <a.hendriks@student.utwente.nl> wrote:

> "John Bokma" <john@castleamber.com> wrote in message 
> news:Xns97C385FC1F82Fcastleamber@130.133.1.4...
>> Tim Van Wassenhove <timvw@users.sourceforge.net> wrote:
>>> dus is het bewaren van NULL waarden vrij zinloos.
>> Vandaar dat ik geen database ken die het niet ondersteund..
> Bijvoorbeeld Oracle? Of specifieker: die ziet het verschil niet tussen 
> string '' en een null string.

Ik ken Oracle niet, klopt. Maar je bedoelt dat bij Oracle een lege string 
opslaan in een veld gelijk is aan NULL? (dus dat een IS NULL test true 
geeft op een lege string?)

Geeft een NULL kolom ook true op een test voor lege string?

En hoe gaat dat dan als je de kolom als "mag geen NULL bevatten" 
definieerd?

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Re: null waarden in datatable
#744
Author: EN
Date: Tue, 16 May 2006 06:10
43 lines
2837 bytes
"StriKe" <strike_usenet@internetfreakz.be.invalid> wrote in message 
news:mn.70ea7d65b632223d.48459@internetfreakz.be.invalid...
> Hallo,
>
> Ik heb een VB.NET applicatie waarin ik gegevens uit een database haal 
> (Access), deze in een datatable stop en via die datatable in een datagrid 
> laat tonen op het scherm.
>
> Via een formulier kunnen de gegevens in die datatable worden gewijzigd.
>
> Vanaf het moment dat de geselecteerde cel verandert in de datagrid voer ik 
> een functie uit die automatisch alle inhoud van het formulier (waarmee dus 
> de datatable te bewerken is) terugschrijft naar de datatable.
>
> Probleem is echter dat ik voor sommige kolommen in mijn datatable 
> null-waarden toelaat.
>
> Wanneer ik deze dan wens op te vullen met een 'echte waarde', bijvoorbeeld 
> een string of integer lukt dat niet, ik krijg dan dit:
>
> De conversie van de tekenreeks Er is een fout opgetreden naar het type 
> Integer is niet geldig.
>
> Het 'bijwerken' van de datatable met de velden uit het formulier gebeurt 
> als volgt:
>
> dr(0)(5) = CInt(TtxtDuur.Text)
>
> Een oplossing zou natuurlijk kunnen zijn om mijn database verder aan te 
> vullen en geen null-waarden meer toe te laten, maar kan het ook anders?

Het lijkterop dat het datatype van je column onjuist is.
Check de inhoud van de betreffende column property maar eens.

dat.Columns[5].DataType

Wat ik persoonlijk zou doen, is een schema gebruiken, door vanuit je 
database een tabel droppen op een XMLData  set designer, zodoende zijn alle 
column properties ineens goed gevuld en hoef je niet meer met dr(0)(5) 
achtige syntax te programmeren maar zoals dr(0).Duur = Cint(TxtDuur.text)).

Je krijgt dan strong-typing, zoals dat heet.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads