Thread View: be.comp.programming
23 messages
23 total messages
Started by StriKe
Sun, 14 May 2006 01:54
null waarden in datatable
Author: StriKe
Date: Sun, 14 May 2006 01:54
Date: Sun, 14 May 2006 01:54
36 lines
2327 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 04:15
Date: Sun, 14 May 2006 04:15
14 lines
1318 bytes
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
Author: Jurjen de Groot
Date: Sun, 14 May 2006 06:41
Date: Sun, 14 May 2006 06:41
49 lines
2464 bytes
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
Author: StriKe
Date: Sun, 14 May 2006 09:04
Date: Sun, 14 May 2006 09:04
28 lines
2023 bytes
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
Author: StriKe
Date: Sun, 14 May 2006 09:05
Date: Sun, 14 May 2006 09:05
18 lines
1665 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 09:20
Date: Sun, 14 May 2006 09:20
21 lines
1657 bytes
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
Author: StriKe
Date: Sun, 14 May 2006 09:49
Date: Sun, 14 May 2006 09:49
26 lines
2172 bytes
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
Author: Peter
Date: Sun, 14 May 2006 10:13
Date: Sun, 14 May 2006 10:13
57 lines
2764 bytes
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
Author: StriKe
Date: Sun, 14 May 2006 10:20
Date: Sun, 14 May 2006 10:20
40 lines
2059 bytes
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
Author: JeroenV
Date: Sun, 14 May 2006 13:02
Date: Sun, 14 May 2006 13:02
36 lines
2520 bytes
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
Author: Tim Van Wassenhove
Date: Sun, 14 May 2006 16:01
Date: Sun, 14 May 2006 16:01
15 lines
1930 bytes
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
Author: Peter
Date: Sun, 14 May 2006 17:32
Date: Sun, 14 May 2006 17:32
65 lines
3370 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:00
Date: Sun, 14 May 2006 18:00
52 lines
3170 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:06
Date: Sun, 14 May 2006 18:06
37 lines
2766 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:10
Date: Sun, 14 May 2006 18:10
33 lines
2505 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:13
Date: Sun, 14 May 2006 18:13
36 lines
2042 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:14
Date: Sun, 14 May 2006 18:14
19 lines
1766 bytes
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
Author: John Bokma
Date: Sun, 14 May 2006 18:19
Date: Sun, 14 May 2006 18:19
38 lines
2247 bytes
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
Author: Peter
Date: Mon, 15 May 2006 17:36
Date: Mon, 15 May 2006 17:36
35 lines
2358 bytes
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
Author: Arnold Hendriks
Date: Mon, 15 May 2006 17:40
Date: Mon, 15 May 2006 17:40
7 lines
1733 bytes
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
Author: John Bokma
Date: Mon, 15 May 2006 18:12
Date: Mon, 15 May 2006 18:12
30 lines
2139 bytes
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
Author: John Bokma
Date: Mon, 15 May 2006 18:15
Date: Mon, 15 May 2006 18:15
24 lines
2181 bytes
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
Author: EN
Date: Tue, 16 May 2006 06:10
Date: Tue, 16 May 2006 06:10
43 lines
2837 bytes
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