Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110

    [VB.NET] DataColumn tipizzata e gestione del valore Null

    Ciao a tutti,
    mi sto scontrando con un problema non da poco utilzzando dataset tipizzati.

    Come saprete ogni dataColumn ha una proprietà chiamata NullValue la quale decreta il da farsi in caso di valore Null

    Visual Studio definisce 3 costanti per questa proprietà ovvero:
    • Empty (che restituisce un valore vuoto)
    • Nessuna (che restituisce un valore Null)
    • Throw exception (che genera un'eccezione)

    Tutto sembra perfetto se non fosse che se il campo (dataColumn) non è di tipo String il caro Visual Studio non consente di impostare il valore di proprietà su nulla che non sia Throw Exception.

    Posto che formalmente credo che sia lecito avere dei valori Null per campi INT32 o Datetime il tutto si risolverebbe se si potesse gestire questa eccezione ma ancora una volta Visual Studio rende le cose impossibili perchè se (nel file .designer del dataset) vado a ritoccare il codice che genera l'eccezione il caro V.S. lo ri sovrascrive ogni volta che riapro il file xsd per editare il mio dataset.

    Ho trovato una guida che spiega come modificare manualmente (nell'XML del file .xsd del dataset) queste proprietà ma mi sta creando non pochi problemi...

    La prima cosa che vorrei chiedere è:

    Perchè mai Visual Studio assume un comportamento del genere? E' naturale usare valori Null (si pensi a 2 tabelle in relazione tramite ID dove la relazione non è per forza esistente ed il campo ID deve essere Null) allora perchè non posso gestire questo caso?


    Se serve vi spiego come sto ritoccando l'XML del file .xsd e che problemi sto avendo (con i campi Datetime) per adesso rimando perchè se no diventa davvero un post troppo lungo.

    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Se riesci a allegare uno zip con un progettino di test, si può vedere il da farsi...

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Ok preparo un progetto base di prova per farvi capire (se allegassi il progetto originale sarebbe un macello) ma come problematica ho già visto online che non è una novita.

    L'ambiente di sviluppo non ti fa selezionare nient'altro che Throw Exception a meno che il campo non sia String....pare sia proprio una scelta (incomprensibile) di Microsoft.....

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Ecco qui!
    Ho rimosso l'exe dalla cartella debug se no pesava troppo per l'upload!
    File allegati File allegati

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Come vedrete nel progetto se provo a "lavorare" sul campo quando il suo valore è Null mi genera un'eccezione mentre io vorrei poter continuare a lavorare...

    Questo succede perchè nel dataset il campo "dataNascita" ha come proprietà NullValue l'azione Throw Execption (come appunto dicevo).... provate un po a cambiarla...


    Se provate a levare il mio TRY vedrete che in debug vi si blocca su una funzione che gestisce l'eccezione che però non posso personalizzare perchè se riapro il designer del Dataset viene di nuovo sovrascritta di default....

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Credo che l'unico modo sia modificare con un edito XML il file .xsd....con gli Int32 mettendo -1 come valore funziona...
    Con datetime però non ho idea di che tipo di dato mettere....

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Non riesco a scaricare il tuo esempio, ma tu parli di proprietà NullValue, ma credo che se non lo hai fatto dovresti prima (o anche solo...) impostare la proprietà AllowDbNull=true

    https://msdn.microsoft.com/it-it/lib...code-snippet-1
    Riccardo Sadocchi
    Microsoft MCP C#

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    Non riesco a scaricare il tuo esempio, ma tu parli di proprietà NullValue, ma credo che se non lo hai fatto dovresti prima (o anche solo...) impostare la proprietà AllowDbNull=true

    https://msdn.microsoft.com/it-it/lib...code-snippet-1
    Grazie per il consiglio ma ovviamente avevo già impostato quella proprietà.

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Io ho scaricato il tuo progetto, ma ho potuto darci appena un'occhiata veloce.
    Lunedì vedo se trovo un po' di tempo.

  10. #10
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,110
    Io più cerco in giro e più capisco che sono fregata....
    A quanto parò da VS 2008 Microsoft ha deprecato i dataset a favore degli EF (Entity Frameworks) dei quali io so esattamente ZERO!

    Questo a quanto pare ha fatto si che questo problema sul NullValue venisse accantonato e tolto dalla lista delle "cose da risolvere"....


    Io spero vivamente che non sia vero perchè se no mi trovo con un'applicazione praticamente a 2/3 dello sviluppo basata su un DB di 18 tabelle praticamente da riconcepire....

    Mi ammazzo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.