AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# XSD-Schema für typisierte Datasets ergänzen
Thema durchsuchen
Ansicht
Themen-Optionen

XSD-Schema für typisierte Datasets ergänzen

Ein Thema von Jürgen Thomas · begonnen am 13. Okt 2006 · letzter Beitrag vom 30. Okt 2006
Antwort Antwort
Jürgen Thomas

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

XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 10:57
Datenbank: Firebird • Version: 2.0 RC4 • Zugriff über: Firebird Net Provider 2.0 RC1
Hallo,

mangels nutzbarer Wizards in #D oder VC#E (siehe meine Frage unter [dp]#D und VC#E Fehlende Provider registrieren[/dp]) erzeuge ich mir meine typ.Datasets halbautomatisch:
  • Datenbank: Metadaten extrahieren
  • damit manuell eine xsd-Schemadatei schreiben (das geht im Editor teilweise über Suchen/Ersetzen)
  • mit XSD.Exe eine passende cs-Datei erstellen lassen
Das funktioniert auch als Notlösung. Mir fehlen aber noch Einstellungen:

Datentyp String: VARCHAR von Firebird, xsd:string und String von Net sind kompatibel. Wie kann ich in der xsd-Schemadatei festlegen, dass ein String bei einem Feld eine maximale Feldlänge hat? Wird dies vom typisierten Dataset und den DataAdaptern berücksichtigt, oder muss ich es - z.B. durch Delegates - selbst steuern?

Datentyp Zeitdauer: TIME von Firebird kann dafür verwendet werden, aber DateTime von Net entspricht dem nicht, weil immer ein Datum hinzugefügt wird; xsd:duration kann mangels Kompatibilität nicht umgesetzt werden. Wie kann ich das lösen? (Bisher nutze ich dafür Strings der Form "12'34" oder "1h 23", was konkret genügt; aber als Dauerlösung ist das unbefriedigend.)

Typisierter DataAdapter: Irgendwo habe ich gelesen, dass dies ebenfalls benötigt wird, um den Datenaustausch zwischen Programm und Datenbank sauber und 'automatisch' zu steuern. In der NET-Doku finde ich aber das Stichwort 'typisiert' nur für DataSets, aber nicht für DataAdapter. Kann mir jemand das Vorgehen erläutern? (Bei meinem bisherigen Vorgehen habe ich keine Probleme mit typ. Dataset und einem 'normal erzeugten' DataAdapter.)

Danke für Erläuterungen und Tipps! Jürgen

PS. Alles läuft unter NET 2.0.
#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
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 12:24
Hallo Jürgen,

zu deiner ersten Frage: eine notwendige Vorraussetzung für eine spätere Auswertung ist die Bereitstellung der Längen-Restriktion. Ob aber die von dir verwendeten Komponenten damit umgehen können - keine Ahnung.

Grüße vom marabu
  Mit Zitat antworten Zitat
Jürgen Thomas

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

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 13:00
Zitat von marabu:
eine notwendige Vorraussetzung für eine spätere Auswertung ist die Bereitstellung der Längen-Restriktion.
Danke, das hatte ich bei meiner Suche auch schon einmal gefunden. Ich verstehe aber nicht, ob (d.h. wie) ich dies bei einem einzelnen Feld eintragen kann oder ob ich für jede Feldlänge einen eigenen String-Typ ableiten muss.

Kannst Du mir dazu etwas sagen? Jürgen

PS. Wie ich schon an anderen Stellen mehrfach betont habe, habe ich wenig Ahnung von HTML und möchte mich wegen anderer Schwerpunkte damit auch nicht näher befassen; aber kurze und dennoch vollständige Erläuterungen helfen mir natürlich trotzdem.
#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
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 13:35
Ich sehe da eine Analogie zum SQL Domain-Konzept. Du hast ja in der Regel auch für jedes VARCHAR(nn) eine Domain DOM_VCnn. In XSD kannst du das analog handhaben.

Zitat von Jürgen Thomas:
... habe ich wenig Ahnung von HTML und möchte mich wegen anderer Schwerpunkte damit auch nicht näher befassen ...
Abgesehen davon, dass XSD kein HTML ist: du möchtest eine Technologie nutzen ohne diese zu verstehen? Hast du das schon mit anderen Technologien erfolgreich praktiziert?

Freundliche Grüße
  Mit Zitat antworten Zitat
Jürgen Thomas

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

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 20:01
Hallo Achim,
Zitat von marabu:
Ich sehe da eine Analogie zum SQL Domain-Konzept. Du hast ja in der Regel auch für jedes VARCHAR(nn) eine Domain DOM_VCnn. In XSD kannst du das analog handhaben.
Diese Analogie sehe ich auch. SQL gehört zu meinem täglichen Brot; da nutze ich das natürlich konsequent.
Zitat von marabu:
Abgesehen davon, dass XSD kein HTML ist:
Da ich die Informationen unter SelfHTML gefunden hatte, habe ich die Abhängigkeit HTML > XML > XSD angenommen.
Zitat von marabu:
du möchtest eine Technologie nutzen ohne diese zu verstehen? Hast du das schon mit anderen Technologien erfolgreich praktiziert?
Grundsätzlich hast Du natürlich recht. Es handelt sich um das Verhältnis von Aufwand und Ertrag: Ich will ein typisiertes DataSet erzeugen, das ich (siehe mein Beitrag #1) nicht direkt erhalte. Ich brauche also als Grundlage eine xsd-Datei, die den Meta-Daten meiner DB entsprechen muss und von XSD.Exe verarbeitet werden kann.

Diese xsd-Datei habe ich fertig. Ich möchte lediglich die genannten Ergänzungen vorsehen und z.B. im Feld Kategorie.Name eine max. Stringlänge von 30 Zeichen festlegen:
XML-Code:
<xsd:schema id="dsDGW"
    elementFormDefault="qualified"
    xmlns=""
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xsd:element name="dsDGW" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
    <xsd:complexType>
      <xsd:choice maxOccurs="unbounded">
        <xsd:element name="Kategorie">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="ID" msdata:AutoIncrement="true" type="xsd:int" />
              <xsd:element name="Name" type="xsd:string" minOccurs="0" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
Im Übrigen gibt es für mich keinerlei Notwendigkeit, mich mit HTML/XML/XSD zu befassen.

Kannst Du mich wirklich nicht verstehen, dass ich nicht erst lang und breit dies lernen will, wenn - wie ich gehofft hatte - mir jemand dies sagen könnte?

Gruß Jürgen

Nachtrag:
HTML = Hypertext Markup Language
XML = Extensible Markup Language
XSD = XML-Schemadatei
also hat das wohl schon irgendetwas miteinander zu tun
#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
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 20:33
Hat die C# Express Edition nicht den visuellen XSD Designer oder gar den DataSet designer vom VS?
Ich kann mich noch daran Erinnern, dass zumindest der DataSet designer in der Express edition enthalten war..
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 21:10
Hallo Jürgen,

dotNet ist nicht meine Welt - und ohne einen Sponsor wird sie es so schnell auch nicht werden. Wenn du ein Tool besitzt, wie es Robert anklingen lässt, dann solltest du es benutzen. Hast du keines, so bezweifle ich, dass meine Änderungen an deinem XSD file von den dotNet Programmen akzeptiert werden. Da scheint eine formale Beschreibung dahinter zu stecken.

Um maxLength in Ansatz zu bringen müsste das Element "Name" sich auf einen simpleType beziehen - und nicht auf den builtin type "xsd:string". Wenn die Datei von einem Tool erstellt wurde, dann solltest du prüfen, ob überhaupt ein einziges Element "xsd:simpleType" vorkommt - oder du müssest mir einen Link auf eine Referenz geben, wo ich den Aufbau der von des benötigten XSD file nachlesen kann.

Auf jeden Fall ist es nicht das einfache Hinzufügen von maxLength="20" an irgendeiner Stelle.

Und verzeih mir meine Frage nach deiner Haltung zu XSD. Manchmal schreibe ich, was ich besser nur denken sollte.

Gute Nacht
  Mit Zitat antworten Zitat
Jürgen Thomas

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

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 13. Okt 2006, 21:21
Zitat von Elvis:
Hat die C# Express Edition nicht den visuellen XSD Designer oder gar den DataSet designer vom VS?
Ich kann mich noch daran Erinnern, dass zumindest der DataSet designer in der Express edition enthalten war..
Du hast recht; aber es werden nur MS-Access und MSSQL angeboten und nicht alle im System vorhandenen Provider... Jürgen
#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
Jürgen Thomas

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

Re: XSD-Schema für typisierte Datasets ergänzen

  Alt 30. Okt 2006, 09:13
@Marabu
Und es geht doch: MaxLength kann in der XSD-Datei direkt beim Feld festgelegt werden:
XML-Code:
<xs:element name="Nachname" minOccurs="0" msdata:Ordinal="5">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="30" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
So einfach geht es; und ähnlich einfach hätte ich (und jeder andere) darauf kommen können: ein Dataset erstellen, als XML-Schema abspeichern und das Ergebnis ansehen.

Bis zur nächsten Frage, die ich mir selbst beantworten muss. Jürgen
#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 00:58 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