AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# Timespan-Umwandlung ungültig bei Firebird und typ.DataSet
Thema durchsuchen
Ansicht
Themen-Optionen

Timespan-Umwandlung ungültig bei Firebird und typ.DataSet

Ein Thema von Jürgen Thomas · begonnen am 30. Sep 2006
Antwort Antwort
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

Timespan-Umwandlung ungültig bei Firebird und typ.DataSet

  Alt 30. Sep 2006, 13:51
Datenbank: Firebird • Version: 2.0 • Zugriff über: Firebird NET Provider 2.0.1.0
Hallo,

ich habe mir zu einer Firebird-DB ein typisiertes DataSet durch XSD.exe erzeugen lassen. Der FB-Datentyp TIME scheint in NET bei der Umwandlung in TimeSpan Probleme zu verursachen, wenn ich es als Dauer (xsd:duration) und nicht als Uhrzeit (xsd:time) interpretieren möchte:

SQL-Code:
CREATE TABLE SENDUNG (
    ID D_ZAHL NOT NULL /* D_ZAHL = INTEGER DEFAULT 0 NOT NULL */,
    TITEL_ID D_ZAHL /* D_ZAHL = INTEGER DEFAULT 0 NOT NULL */,
    DATUM D_DATE NOT NULL /* D_DATE = DATE */,
    VON D_ZEIT NOT NULL /* D_ZEIT = TIME */
    // usw. weitere Felder );
Dazu habe ich (teilweise manuell) eine Daten.xsd erzeugt u.a. mit diesem Inhalt:
XML-Code:
<xsd:element name="Sendung">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element name="ID" msdata:AutoIncrement="true" type="xsd:int" />
      <xsd:element name="Titel_ID" msdata:AutoIncrement="false" type="xsd:int" />
      <xsd:element name="Datum" type="xsd:date" minOccurs="0" />
      <xsd:element name="von" type="xsd:duration" minOccurs="0" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
Daraus hat XSD folgenden C#-Quelltext erzeugt:
Code:
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public System.TimeSpan von {
    get {
        try {
            return ((System.TimeSpan)(this[this.tableSendung.vonColumn]));
        }
        catch (System.InvalidCastException e) {
            throw new System.Data.StrongTypingException("Der Wert für Spalte von in Tabelle Sendung ist DBNull.", e);
        }
    }
    set {
        this[this.tableSendung.vonColumn] = value;
    }
}
Beim Einlesen der Daten (im Feld 'Von' steht der Wert '12:07:00') über DataAdapter erhalte ich die folgende Fehlermeldung:
Zitat:
Die angegebene Umwandlung ist ungültig. <01.01.1970 12:07:00> konnte nicht in der von-Spalte gespeichert werden. Erwarteter Typ: TimeSpan
In meiner jetzigen Situation konnte ich 'xsd:duration' durch 'xsd:time' ersetzen und die cs-Datei neu erstellen lassen - und alles funktioniert einwandfrei. Es bleibt die generelle Frage: Wie muss ein duration-Wert in einer FB-DB gespeichert werden, damit er in einem NET-DataSet genutzt werden kann? Ich habe nämlich noch ein weiteres Feld, das wirklich eine Dauer bezeichnet!

Danke für Hinweise! Jürgen

PS. Aus mehreren praktischen Gründen möchte ich Datum, Startzeit "Von" und Schlusszeit "Bis" trennen. Bitte nicht darüber streiten.
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz