575 messaggi dal 23 giugno 2003
www.padovaboy.it
Grandissimo ;)
Mo me lo scarico e ci do subito un'occhio! :D
Grazie ancora Marco sei mitico!

www.padovaboy.it dal 2001 con furore :D
:) non esageriamo, fammi sapere se condividi la modifica fatta al DataReader, in pratica invece di generare un eccezion in caso la data recuperata non sia valida per il tipo DateTime invece di generare un eccezione ritorno un valore Dbnull

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
575 messaggi dal 23 giugno 2003
www.padovaboy.it
Per data non valida presumo che tu intenda principalmente le fastidiose date con 0!
Io ho affrontato il problema direttamente sul tipo di dato, seguendo il post:
http://forum.valhallalegends.com/phpbbs/index.php?PHPSESSID=759b972fa86b6cc3368fe515ed72b4dc&topic=10482.new
In cui riporta questo codice per MySqlDateTime.cs, specificando che questo permette di non avere problemi in assegnazione in quanto un DateTime non permette il valore dbnull:

internal MySqlDateTime(DateTime val, MySqlDbType type) : this(type)
{
            if (val == DateTime.MinValue) // this entire conditional and branch were added
            {
                year = 0;
                month = 0;
                day = 0;
                hour = 0;
                minute = 0;
                second = 0;
            }
            else
            { // everything inside this branch constituted the original code.
                year = val.Year;
                month = val.Month;
                day = val.Day;
                hour = val.Hour;
                minute = val.Minute;
                second = val.Second;
            }
        }


/// <summary>Returns this value as a DateTime</summary>
/// <remarks>
/// <para>For invalid dates, this value represents a DateTime that would be equivalent to <b>DateTime.MinValue</b>.</para>
/// </remarks>
public DateTime GetDateTime()
{
            if (!IsValidDateTime)
                // exception thrown is commented out.  instead, return DateTime.MinValue.
                //throw new MySqlConversionException("Unable to convert MySQL date/time value to System.DateTime");
                return DateTime.MinValue;

            return new DateTime( year, month, day, hour, minute, second );
}


Venendo al tuo codice:

//non capisco lo scopo  della condizione originale >> !dt.IsValidDateTime && connection.Settings.ConvertZeroDateTime
 if (!dt.IsValidDateTime)
                    return DBNull.Value;//DateTime.MinValue;
                else if (connection.Settings.AllowZeroDateTime)
                    return val;
                else
                    return dt.GetDateTime();
      }

      return val.ValueAsObject;
    }

Effettivamente la condizione originale pare errata (più che altro insensata).
Qua fai in modo di sputare un dbnull nel caso in cui via sia un errore, al posto del minvalue...qua bisogna fare qualche prova...non è che si incrocchia il tutto se creo una funzione che richiede un datetime in entrata...e gli passo un dbnull?
Forse con DateTime? (nullable) lo accetta ma se no, fa crocchio!

Perdona se ho detto cazzate ma sono ancora indietro con C# e .NET ;)

Intanto grazie ancora del codicione!
Più tardi se ho tempo ci do una sbirciata più a fondo ;)

www.padovaboy.it dal 2001 con furore :D
la modifica apporta al DataReader non dovrebbe mai creare problemi, visto che il DataReader è sempre ReadOnly.

comunque nei test che ho fatto anche se semplici non ha mai dato problemi, ma devo mettere su un UnitTest fatto bene.

ho preferito non modifiare il tipo MySqlDbType e onestamente capisco poco il controllo che veniva eseguito, specialmente visto che a me piace fare, inserire null invece che DateTime.MinValue et simila.

ma è un gusto personale :)

non so in che tempi ma conto di introdurre anche il supporto per l'ide del VS 2005

ciao marco e grazie come al solito.
Modificato da nostromo il 14 marzo 2006 11.09 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
3 messaggi dal 16 maggio 2004
Salve a tutti. Qualcuno potrebbe fornirmi la dll già compilata, per favore? Il mio indirizzo email è ilballo@yahoo.it. Grazie.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.