[ASP.NET] DataSet en lege velden van een database

Pagina: 1
Acties:

  • Stimpy001
  • Registratie: Maart 2000
  • Laatst online: 16-09-2025
In ASP.NET kan je een tabel uit een database in een zogenaamde DataSet stoppen, middels Fill. Als je deze DataSet vervolgens via Internet Explorer bekijkt, krijg je een XML-bestand met hierin alle gegevens van de desbetreffende tabel. Het XML-bestand bestaat uit een gedeelte dat de opbouw beschrijft en de werkelijke inhoud van de tabel.

Nu heb ik het volgende probleem: Indien er lege velden in de database zijn, worden deze niet opgenomen in het xml-bestand. Er staat dus geen node aangegeven. Als bij een volgend record het veld wel een waarde heeft, wordt de node, met bijbehorende waarde, wel weergegeven. Hierdoor is het XML-gedeelte met de inhoud niet universeel.

Voor het verdere gebruik van het desbetreffende XML-bestand zou ik graag willen hebben dat het wel universeel is dwz ook lege nodes tonen. Is dit mogelijk?

Wat jij vergeten bent, hoeft voor mij geen spoed te zijn.


  • exyll
  • Registratie: Januari 2002
  • Laatst online: 22-04 22:32
Waarom wil je dit vraag ik mij als eerste af :-)

Maar wat je kunt proberen is een typed dataset maken en vervolgens in die XSD aangeven dat je voor alle elementen het attribuut minoccurs op 1 zet en nillable op true. Hiermee geef je aan dat de elementen ALTIJD aanwezig moeten zijn maar wel leeg mogen zijn (null).

Ik denk dat dat wel werkt. Zo niet, dan kijk ik even mee naar een oplossing :-D

Ramon Smits


  • Stimpy001
  • Registratie: Maart 2000
  • Laatst online: 16-09-2025
De eerste vraag had ik eignelijk al wel verwacht. Ik zal proberen een uitleg te geven.

Ik moet de DataSet, of ieder geval de XML representatie ervan, gebruiken in Flash 5. Om dit te kunnen moet ik de DataSet zelf converteren naar een Array. Als de DataSet nu altijd universeel is, betekent dit dat ik een 1 functie kan schrijven die de DataSet converteerd naar een Array waarbij op elke positie altijd een vaste waarde staat. Dus bijvoorbeeld Array[0] = ID en Array[5] = woonplaats, etc. Dit is dan altijd zo. Maar als er dus lege velden zijn, is de structuur van de Array niet meer hetzelfde. Daarom wil ik dus een universele DataSet hebben.

Wat jij vergeten bent, hoeft voor mij geen spoed te zijn.


Verwijderd

Enums?? :?

Public Enum _tblLogColumns As Integer
ID = 0
Logged = 1
Description = 2
UserID = 3
End Enum

Verwijderd

Stimpy001 schreef op 09 December 2002 @ 13:45:
Indien er lege velden in de database zijn, worden deze niet opgenomen in het xml-bestand. Er staat dus geen node aangegeven.
Dit klopt :) en de enige mogelijkheid die ik zo snel ff zie, is de volgende workaround:
zorg dat je geen lege (==null) velden in je dataset krijgt, maar dat je in het geval van bijvoorbeeld een string, een lege string (=="") terugkrijgt.

  • skiwi
  • Registratie: Februari 2001
  • Laatst online: 05-04 14:13
Zo maar een hersenspinsel:

stel: je doet een SELECT id, woonplaats FROM mytable

Dan krijg je je gegevens netjes in een DataSet terug. Als woonplaats een keer leeg is kun je dit toch afvangen? Je komt 'woonplaats' voor dat record dan niet tegen in je XML structuur. Kun je daar niks mee dan?

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:56
skiwi schreef op 10 December 2002 @ 14:32:
Zo maar een hersenspinsel:

stel: je doet een SELECT id, woonplaats FROM mytable

Dan krijg je je gegevens netjes in een DataSet terug. Als woonplaats een keer leeg is kun je dit toch afvangen? Je komt 'woonplaats' voor dat record dan niet tegen in je XML structuur. Kun je daar niks mee dan?


Het probleem is eigenlijk dat je niet zelf die dataset naar een xml bestand gaat schrijven door record per record te overlopen.
Het gebeurt gewoon als volgt:
code:
1
DataSet.WriteXml(...);

https://fgheysels.github.io/


  • Stimpy001
  • Registratie: Maart 2000
  • Laatst online: 16-09-2025
Eigenlijk doe ik het nog anders. Namelijk:
code:
1
2
3
4
5
6
7
8
9
Dim Cn As System.Data.OleDb.OleDbConnection
Dim Da As System.Data.OleDb.OleDbDataAdapter
Dim Ds As System.Data.DataSet

Cn = New System.Data.OleDb.OleDbConnection(AppSettings("ConnectionString"))
Da = New OleDbDataAdapter(strSQL, Cn)
Ds = New DataSet()
Da.Fill(Ds)
GetDataSet = Ds

Wat jij vergeten bent, hoeft voor mij geen spoed te zijn.

Pagina: 1