Time SubType in DTO benutzen

Adrian Lenherr

:bang:
Das mit den DTO's klappt im eigentlichen Super nur das auslesen von Time Feldern funktioniert irgendwie nicht richtig das Schreiben ist kein Problem. Wie kann ich ein Time SubType auslesen?

Ich hab glaub jede Möglichkeit ausprobiert. Ist das Problem dass es in der DB als SmalInt gespeichert wird.

Jedefalls bricht er beim Load() ab

Data.ComeNGoDTO cDTO = new Data.ComeNGoDTO();
cDTO.Code = strCode;
cDTO.Load();


Das DTO hat z.B. folgendes Feld. Ohne diese TimeFelder funktioniert es!!!


[ToPersist]
[FieldType(FieldTypes.Date)]
[SubType(SubTypes.Time)]
[Size(8)]
public DateTime DateGo
{
get { return dateGo; }
set { dateGo = value; }
}


Vielleicht hab ich ja was vergessen zu beachten! Danke für euere Hilfe

Gruss Adi

Adrian Meier

Hallo Adi

Bitte ruf mich bei Gelegenheit deswegen schnell an.

Gruss, Adrian

G Babel

Moin,

genau dieses Thema interessiert mich auch grad brennend. Gibt es eine Lösung ?

Beste Grüße aus Hamburg

Gregor

Roland

Hallo zusammen!

Ich würde auch gerne erfahren wie das Auslesen von "Time"-Feldern funktioniert.

Könntet Ihr die Lösung bitte hier veröffentlichen?

 

Viele Grüße,

Roland

Thilo-Simon Studt

Moin,



ich weiß nicht ob es mittlerweile ne aktuellere oder Offizielle Lösung zu diesem Problem gibt, aber ich schreib hier mal kurz was das eigentlich Problem ist und gebe dann noch meine Lösung dazu.



Problem:

Das Framework verwendet quasi ja auch nur unsere Get Set Methode um uns den Wert zu übermitteln bzw. ihn sich zu holen.

Und nu kommen wir auch schon zu dem eigentlichen Problem ... und zwar liefert das Framework einen anderen Wert als es erwartet. Um mal ein Bespiel zu nennen ruft das Framework unsere Set Methode mit dem Wert "0800" auf, erwartet aber wenn es unsere Get Methode aufruft "08:00".

Hatte nen ähnliches Problem schonmal bei der dto search Geschichte bei Date feldern, aber das ist nen anderes Thema :-)



Lösung:

Wir geben dem Framework seine eigene spezielle Eigenschaft um diesen Missstand für uns zu beheben. Als interne Variable hab ich nen String genommen, aber eigentlich ist der typ egal nur sind dann die Umformungsmethoden anders. Wichtig ist nur das die Eigenschaft einen String erwartet, damit wir diese Umformung vornehmen können.



Die BeginTimeDTO Methode ist fürs Framework und mache sie deswegen zur Sicherheit nicht öffentlich.

Die BeginTime Methode ist dann für mich wie ich sie gerade dort am besten brauche, kann natürlich auch Integer oder DateTime sein.



[CODE]

<ToPersist()> _

<FieldType(FieldTypes.Date)> _

<SubType(SubTypes.Time)> _

<FieldName("BeginTime")> _

Private Property BeginTimeDTO() As String

Get

Return ConvertToDTOTime(m_BeginTime)

End Get

Set(ByVal value As String)

m_BeginTime =value

End Set

End Property

Public Property BeginTime() As String

Get

Return ConvertFromDTOTime(m_BeginTime)

End Get

Set(ByVal value As String)

m_BeginTime = ConvertToDTOTime(value)

End Set

End Property



Private Function ConvertToDTOTime(ByVal _sTime As String) As String

Dim Result As String

If _sTime.IndexOf(":") = -1 Then

Result = _sTime.PadLeft(4, "0").Insert(2, ":")

Else

Result = _sTime

End If

Return Result

End Function



Private Function ConvertFromDTOTime(ByVal _sTime As String) As String

Dim Result As String

If _sTime.IndexOf(":") <> -1 Then

Result = _sTime.Remove(_sTime.IndexOf(":"), 1)

Else

Result = _sTime

End If

Return Result

End Function

[/CODE]



Ich hoffe ich konnte mich einigermaßen klar ausdrücken und das ich damit irgendjemanden weiterhelfen konnte der auch auf diesen Betrag gestoßen ist und sich geärgert hat, daß da keine Antwort steht :-)
0

Comments

0 comments

Please sign in to leave a comment.

Didn't find what you were looking for?

New post