Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Objekt med datetime

Postades av 2005-03-29 18:04:27 - Päringe Bergman, i forum asp.net generellt, Tråden har 9 Kommentarer och lästs av 610 personer

Hej!

Har ett objekt med egenskapen slutdatum.
När jag sparar detta objekt så finns inte alltid ett slutdatum.

Hur får jag egenskapen datetime att vara ingenting när jag skall spara.

Har försök att inte sätta egenskapen datetime i mitt objekt men då blit datetime 0000-00-00.

Men jag vill inte att detta datetime inte skall ha något värde alls i databasen.

Hur göra?

Skall jag sätta egenskapen datetime till string istället?


Svara

Sv: Objekt med datetime

Postades av 2005-03-30 01:23:01 - Göran Andersson

Sätt värdet till null (System.DBNull.Value).


Svara

Sv:Objekt med datetime

Postades av 2005-03-30 09:12:12 - Päringe Bergman

Jo det kan ja ju göra men bara värdet i databasen. Sätter jag min egenskap i objektet som är av typen datetime så blir det ju ett felmeddelande.


Svara

Sv: Objekt med datetime

Postades av 2005-03-30 10:06:18 - Johan Djupmarker

Fungerar det inte att sätta den till null?

/Johan


Svara

Sv:Objekt med datetime

Postades av 2005-03-30 10:10:19 - Anders Vikström

Värdedatatyper kan fn inte vara null i .NET (kommer i 2.0). Jag kan inte se någon annan lösning att på ett eller annat sätt ha en kompleterande flagga som talar om huruvida datumet skall betraktas som null eller ej.


Svara

Sv: Objekt med datetime

Postades av 2005-03-30 11:28:37 - Päringe Bergman

Okej, tack för svaren


Svara

Sv:Objekt med datetime

Postades av 2005-03-30 11:57:20 - Per Hultqvist

Det du kan göra är att välja ett datum som betyder att datumet är tomt. Det finns två lämpliga värden för detta, nämligen System.DateTime.MinValue och System.DateTime.MaxValue.

Sannolikheten att du skulle behöva använda just det datum som System.DateTime.MinValue representerar är ganska liten. Från hjälpen :
<info>
<b>Remarks</b>
The value of this constant is equivalent to 00:00:00.0000000, January 1, 0001.
</info>
När du vill "nulla" ett datum skriver du alltså :
<code>
Dim MyDate As System.DateTime=System.DateTime.MinValue
</code>
och när du vill kolla om ett datum är "null" så skriver du :
<code>
If MyDate=System.DateTime.MinValue then
...
End If
' or
If MyDate.Equals(System.DateTime.MinValue) then
...
End If
</code>

Alternativet är ju annars som Anders skrev, att vänta på .Net 2.0 och nullable types :-(


Svara

Sv: Objekt med datetime

Postades av 2005-03-30 13:02:53 - Anders Vikström

Vill bara påpeka att man redan nu att skapa egna "nullable types". Nu är det ju inte riktigt samma sak som en äkta datetime, men om du är intresserad så kanske följande kod kan vara till hjälp:

    /// <summary>
    /// A nullable alternative to the corresponding intrinsic value type.
    /// </summary>
    [Serializable]
    public struct NullableDateTime
    {
        private DateTime _value;
        private bool _isNotNull;

        /// <summary>
        /// Creates an instance based on the given value.
        /// </summary>
        /// <param name="value">The value to give the new instance.</param>
        public NullableDateTime(DateTime value)
        {
            _value = value;
            _isNotNull = true;
        }

        /// <summary>
        /// Returns the the underlying value of the type.
        /// </summary>
        public DateTime Value
        {
            get { return _value; }
            set { _value = value; }
        }

        /// <summary>
        /// Is true if the no value has been set.
        /// </summary>
        public bool IsNull
        {
            get { return !_isNotNull; }
            set { _isNotNull = !value; }
        }

        /// <summary>
        /// Operator to allow implicit cast from the nullable type to a the intrinsic type.
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static implicit operator DateTime(NullableDateTime value) 
        {
            return value.Value;
        }

        /// <summary>
        /// Operator to allow implicit cast from an intrinsic type to the nullable type.
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static implicit operator NullableDateTime(DateTime value) 
        {
            return new NullableDateTime(value);
        }

        /// <summary>
        /// Returns a String that represents the current type.
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return this.IsNull ? "" : _value.ToString();
        }

        /// <summary>
        /// Determines whether the current instance is equal to the given object.
        /// </summary>
        /// <param name="obj">The object to compare with the current instance.</param>
        /// <returns>True if both are null or if both are of same type and has the same value.</returns>
        public override bool Equals(object obj)
        {
            if (this.IsNull || obj == null)
            {
                return this.IsNull && obj == null;
            }
            else if (obj is DateTime || obj is NullableDateTime)
            {
                return DateTime.Equals(this.Value, (DateTime) obj);
            }
            else 
            {
                return false;
            }
        }

        /// <summary>
        /// Returns a hash code for the current instance.
        /// </summary>
        /// <returns>The hash code of the underlying value object.</returns>
        public override int GetHashCode()
        {
            return Value.GetHashCode();
        }

        /// <summary>
        /// Allows comparison between two instances of the nullable type.
        /// </summary>
        /// <param name="leftValue">Left value.</param>
        /// <param name="rightValue">Right value.</param>
        /// <returns>True if equal, false if not.</returns>
        public static bool operator ==(NullableDateTime leftValue, NullableDateTime rightValue) 
        {
            return leftValue.Equals(rightValue);
        }

        /// <summary>
        /// Allows comparison between two instances of the nullable type.
        /// </summary>
        /// <param name="leftValue">Left value.</param>
        /// <param name="rightValue">Right value.</param>
        /// <returns>False if equal, true if not.</returns>
        public static bool operator !=(NullableDateTime leftValue, NullableDateTime rightValue) 
        {
            return !leftValue.Equals(rightValue);
        }
    }



Svara

Sv:Objekt med datetime

Postades av 2005-03-30 13:27:52 - Per Hultqvist

Nice, den strukturen skulle man kunna ha användning för ibland.

En av de implicita typkonverteringarna kommer ju dock att smälla på ett "object reference not set"-exception (vad det nu heter) om value är Null så bättre hade kanske varit att ändra :
<code>
public static implicit operator DateTime(NullableDateTime value)
{
return value.Value;
}
</code>
till :
<code>
public static implicit operator DateTime(NullableDateTime value)
{
if (value==null) throw new ArgumentNullException();

return value.Value;
}
</code>

Den snutten hamnar hur som helst i bra-att-ha-högen...


Svara

Sv: Objekt med datetime

Postades av 2005-03-30 15:02:32 - Anders Vikström

Hmm... Hur gör man för att hamna i det läget du beskriver, dvs att argumentet value är null i DateTime-operatorn?


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
5 896
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies