<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pial</id>
	<title>RAD Studio - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pial"/>
	<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/de/Spezial:Beitr%C3%A4ge/Pial"/>
	<updated>2026-08-30T21:52:54Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=GetIt-Abh%C3%A4ngigkeiten&amp;diff=208377</id>
		<title>GetIt-Abhängigkeiten</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=GetIt-Abh%C3%A4ngigkeiten&amp;diff=208377"/>
		<updated>2016-06-02T15:05:58Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with WM. LOC-22823&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Projektoptionen (Dialogfeld)}}&lt;br /&gt;
&lt;br /&gt;
[[File:GetItDependenciesDialog.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
{{Menu|Projekt &amp;amp;gt; Optionen &amp;amp;gt; GetIt-Abhängigkeiten}}&lt;br /&gt;
&lt;br /&gt;
In diesem Dialogfeld können Sie die Abhängigkeiten Ihres Projekts in Packages, die in der Ablage vom &#039;&#039;&#039;[[GetIt-Package-Manager|GetIt-Package-Manager]]&#039;&#039;&#039; bereitstehen, festlegen.&lt;br /&gt;
&lt;br /&gt;
{{Product}} speichert konfigurierte GetIt-Abhängigkeiten in der {{Path|.dproj}}-Datei Ihres Projekts. Dies ermöglicht &#039;&#039;&#039;[[MSBuild|MSBuild]]&#039;&#039;&#039; jede fehlende GetIt-Abhängugkeit mit dem [[GetItCmd.exe|Befehlszeilen-Schnittstelle des GetIt-Package-Manager]] zu installieren.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;GetIt Dependencies&#039;&#039;&#039; Dialogfeld enthält die folgenden Elemente:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Erforderlich&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Die aktivierten Kontrollkästchen legen fest, welche Packages für das Projekt erforderlich sind.&lt;br /&gt;
&lt;br /&gt;
Um anzugeben, dass ein Package für das Projekt erforderlich ist, wählen Sie das entsprechende Kontrollkästchen aus und klicken auf &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Packages können die folgenden Status annehmen:&lt;br /&gt;
* &#039;&#039;&#039;Verfügbar&#039;&#039;&#039;: Wenn das Package installiert ist. Dies weist nicht auf einen Zusammenhang mit dem Projekt hin.&lt;br /&gt;
* &#039;&#039;&#039;Fehlt&#039;&#039;&#039;: Wenn das Package vom Projekt benötigt wird, aber nicht installiert ist.&lt;br /&gt;
* &#039;&#039;&#039;Nicht verfügbar&#039;&#039;&#039;: Wenn das Package vom Projekt benötigt wird, aber nicht mehr in GetIt verfügbar ist.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Name des Package.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Beschreibung des Package.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Schaltfläche &#039;&#039;&#039;Installieren&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Mit dieser Schaltfläche können Sie Packages mit dem Status &#039;&#039;&#039;Fehlt&#039;&#039;&#039; installieren; d. h. Packages, die nicht installiert, aber für das Projekt erforderlich sind.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Schaltfläche &#039;&#039;&#039;Alle fehlenden Packages installieren&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Mit dieser Schaltfläche können Sie alle Packages installieren, die nicht installiert, aber für das Projekt erforderlich sind. &lt;br /&gt;
&lt;br /&gt;
Über diese Schaltfläche installieren Sie ein oder mehrere &#039;&#039;&#039;Fehlende&#039;&#039;&#039; Packages, die vom Projekt benötigt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Öffnen eines Projekts mit fehlenden GetIt-Abhängigkeiten==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Projekt öffnen, das nicht installierte &amp;quot;GetIt-Abhängigkeiten&amp;quot; enthält, werden Sie von {{Product}} benachrichtigt, mit der Option, sie herunterzuladen:&lt;br /&gt;
&lt;br /&gt;
: [[File:GetItDependenciesInfo.png]]&lt;br /&gt;
&lt;br /&gt;
Sie können entweder &#039;&#039;&#039;Yes&#039;&#039;&#039; auswählen, um die fehlenden Abhängigkeiten zu installieren, oder &#039;&#039;&#039;No&#039;&#039;&#039;, und diese Abhängigkeiten später von der &#039;&#039;&#039;GetIt-Abhängigkeiten&#039;&#039;&#039;-Seite zu installieren, unter der Verwendung der Schaltfläche &#039;&#039;&#039;Installieren aller fehlenden Packages&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[GetIt-Package-Manager|GetIt-Package-Manager]]&lt;br /&gt;
* [[Fenster &amp;quot;GetIt-Package-Manager&amp;quot;|Fenster &amp;quot;GetIt-Package-Manager&amp;quot;]]&lt;br /&gt;
* [[Installieren eines Package mit dem Getlt-Package-Manager|Installieren eines Package mit dem Getlt-Package-Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:Berlin]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=GetIt-Abh%C3%A4ngigkeiten&amp;diff=208376</id>
		<title>GetIt-Abhängigkeiten</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=GetIt-Abh%C3%A4ngigkeiten&amp;diff=208376"/>
		<updated>2016-06-02T15:05:24Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with WM. LOC-22823&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Projektoptionen (Dialogfeld)}}&lt;br /&gt;
&lt;br /&gt;
[[File:GetItDependenciesDialog.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
{{Menu|Projekt &amp;amp;gt; Optionen &amp;amp;gt; GetIt-Abhängigkeiten}}&lt;br /&gt;
&lt;br /&gt;
In diesem Dialogfeld können Sie die Abhängigkeiten Ihres Projekts in Packages, die in der Ablage vom &#039;&#039;&#039;[[GetIt-Package-Manager|GetIt-Package-Manager]]&#039;&#039;&#039; bereitstehen, festlegen.&lt;br /&gt;
&lt;br /&gt;
{{Product}} speichert konfigurierte GetIt-Abhängigkeiten in der {{Path|.dproj}}-Datei Ihres Projekts. Dies ermöglicht &#039;&#039;&#039;[[MSBuild|MSBuild]]&#039;&#039;&#039; jede fehlende GetIt-Abhängugkeit mit dem [[GetItCmd.exe|Befehlszeilen-Schnittstelle des GetIt-Package-Manager]] zu installieren.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;GetIt Dependencies&#039;&#039;&#039; Dialogfeld enthält die folgenden Elemente:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Erforderlich&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Die aktivierten Kontrollkästchen legen fest, welche Packages für das Projekt erforderlich sind.&lt;br /&gt;
&lt;br /&gt;
Um anzugeben, dass ein Package für das Projekt erforderlich ist, wählen Sie das entsprechende Kontrollkästchen aus und klicken auf &#039;&#039;&#039;OK&#039;&#039;&#039;.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Status&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Packages können die folgenden Status annehmen:&lt;br /&gt;
* &#039;&#039;&#039;Verfügbar&#039;&#039;&#039;: Wenn das Package installiert ist. Dies weist nicht auf einen Zusammenhang mit dem Projekt hin.&lt;br /&gt;
* &#039;&#039;&#039;Fehlt&#039;&#039;&#039;: Wenn das Package vom Projekt benötigt wird, aber nicht installiert ist.&lt;br /&gt;
* &#039;&#039;&#039;Nicht verfügbar&#039;&#039;&#039;: Wenn das Package vom Projekt benötigt wird, aber nicht mehr in GetIt verfügbar ist.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Name des Package.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Beschreibung des Package.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Schaltfläche &#039;&#039;&#039;Installieren&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Mit dieser Schaltfläche können Sie Packages mit dem Status &#039;&#039;&#039;Fehlt&#039;&#039;&#039; installieren; d. h. Packages, die nicht installiert, aber für das Projekt erforderlich sind.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Schaltfläche &#039;&#039;&#039;Alle fehlenden Packages installieren&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
Mit dieser Schaltfläche können Sie alle Packages installieren, die nicht installiert, aber für das Projekt erforderlich sind. &lt;br /&gt;
&lt;br /&gt;
Über diese Schaltfläche installieren Sie ein oder mehrere &#039;&#039;&#039;Fehlende&#039;&#039;&#039; Packages, die vom Projekt benötigt werden.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Öffnen eines Projekts mit fehlenden GetIt-Abhängigkeiten==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie ein Projekt öffnen, das nicht installierte &amp;quot;GetIt-Abhängigkeiten&amp;quot; enthält, werden Sie von {{Product}} benachrichtigt, mit der Option, sie herunterzuladen:&lt;br /&gt;
&lt;br /&gt;
: [[File:GetItDependenciesInfo.png]]&lt;br /&gt;
&lt;br /&gt;
Sie können entweder &#039;&#039;&#039;Yes&#039;&#039;&#039; auswählen, um die fehlenden Abhängigkeiten zu installieren, oder &#039;&#039;&#039;No&#039;&#039;&#039;, und diese Abhängigkeiten später von der &#039;&#039;&#039;GetIt-Abhängigkeiten&#039;&#039;&#039;-Seite zu installieren, unter der Verwendung der Schaltfläche &#039;&#039;&#039;Installieren aller fehlenden Packages&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[GetIt-Package-Manager|GetIt-Package-Manager]]&lt;br /&gt;
* [[Fenster &amp;quot;GetIt-Package-Manager&amp;quot;|Fenster &amp;quot;GetIt-Package-Manager&amp;quot;]]&lt;br /&gt;
* [[Installieren eines Package mit dem Getlt-Package-Manager|Installieren eines Package mit dem Getlt-Package-Manager]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:Berlin]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Position_von_DLL-Dateien&amp;diff=208330</id>
		<title>Position von DLL-Dateien</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Position_von_DLL-Dateien&amp;diff=208330"/>
		<updated>2016-06-01T08:33:40Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Installationsprogramme verwenden}}&lt;br /&gt;
&lt;br /&gt;
DLL-Dateien, die nur von einer einzigen Anwendung verwendet werden, können in demselben Verzeichnis wie die Anwendung installiert werden. Wird eine DLL jedoch von mehreren Anwendungen genutzt, muss sie sich an einer Position befinden, auf die alle Anwendungen zugreifen können. Häufig werden derartige DLLs entweder im Verzeichnis WINDOWS oder in WINDOWS\SYSTEM bereitgestellt. Besser ist es aber, wenn ein separates Verzeichnis für gemeinsam genutzte DLLs angelegt wird, ähnlich wie dies bei der Installation der BDE (Borland Database Engine) geschieht.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Installationsprogramme verwenden|Installationsprogramme verwenden]]&lt;br /&gt;
* [[Anwendungsdateien identifizieren|Anwendungsdateien identifizieren]]&lt;br /&gt;
*[[Hilfsanwendungen|Hilfsanwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DESIGNONLY-Direktive_(Delphi)&amp;diff=208328</id>
		<title>DESIGNONLY-Direktive (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DESIGNONLY-Direktive_(Delphi)&amp;diff=208328"/>
		<updated>2016-06-01T08:33:39Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der Delphi-Compiler-Direktiven - Index}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Option&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DESIGNONLY ON} oder {$DESIGNONLY OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Vorgabe&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DESIGNONLY OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bereich&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Lokal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Direktive &#039;&#039;&#039;{DESIGNONLY ON}&#039;&#039;&#039; bewirkt, dass das entsprechende Package für die Installation in der Entwicklungsumgebung compiliert wird.&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie die Direktive &#039;&#039;&#039;DESIGNONLY&#039;&#039;&#039; nur in [[Delphi Package Source File|Package-Quelldateien]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
*[[Spezielle Compiler-Direktiven für Packages|Spezielle Compiler-Direktiven für Packages]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Treiber_und_Framework-Unterst%C3%BCtzung_f%C3%BCr_SQL_Anywhere_11&amp;diff=208326</id>
		<title>DbExpress-Treiber und Framework-Unterstützung für SQL Anywhere 11</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Treiber_und_Framework-Unterst%C3%BCtzung_f%C3%BCr_SQL_Anywhere_11&amp;diff=208326"/>
		<updated>2016-06-01T08:33:37Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
{{DISPLAYTITLE:dbExpress-Treiber und Framework-Unterstützung für SQL Anywhere 11}}&lt;br /&gt;
{{Product}} XE unterstützt SQL Anywhere 11 von Sybase iAnywhere. Leistungsmerkmale:&lt;br /&gt;
&lt;br /&gt;
* Zu den neuen von SQL Anywhere 11 unterstützten Datentypen zählen &#039;&#039;&#039;NCHAR&#039;&#039;&#039;, &#039;&#039;&#039;NVARCHAR&#039;&#039;&#039; und &#039;&#039;&#039;LONG NVARCHAR&#039;&#039;&#039;.&lt;br /&gt;
* Neue Verbindungseigenschaften und -attribute, wie &#039;&#039;&#039;UNICODE-Metadaten&#039;&#039;&#039;, &#039;&#039;&#039;include TABLE&#039;&#039;&#039;, &#039;&#039;&#039;FIELD&#039;&#039;&#039; und &#039;&#039;&#039;INDEX-Name&#039;&#039;&#039;.&lt;br /&gt;
* Unterstützung von &#039;&#039;&#039;NLS / UNICODE&#039;&#039;&#039; für Adaptive Server Anywhere (ASA) 11.&lt;br /&gt;
&lt;br /&gt;
==Vom neuen ASA-11-Treiber unterstützte Datentypen==&lt;br /&gt;
&lt;br /&gt;
{{Product}} XE führt neues Verhalten für alte Datentypen und die Unterstützung für neue Datentypen ein. Die folgende Tabelle enthält die Datentypen und deren gekapselte ASA-11-Feldtypen, die von der Version 11 des iAnywhere-Treibers unterstützt werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Datentyp&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Gekapselter Feldtyp&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Nennung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_NULL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANULL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_UNKNOWN_TYPE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAUNKNOWN&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_CHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASACHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAUNIQUEIDENTIFIERSTR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 1&amp;lt;br /&amp;gt;&lt;br /&gt;
// maximale Größe = 36&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_NUMERIC&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANUMERIC&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAMONEY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASASMALLMONEY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 2&amp;lt;br /&amp;gt;&lt;br /&gt;
// 2&amp;lt;br /&amp;gt;&lt;br /&gt;
// 2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DECIMAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADECIMAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_INTEGER&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAINTEGER&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 4&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_SMALLINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASASMALLINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_FLOAT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAFLOAT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 6&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_REAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAREAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DOUBLE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADOUBLE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 8&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 91&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 93&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_VARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DATETIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADATETIME&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASASMALLDATETIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 9&amp;lt;br /&amp;gt;&lt;br /&gt;
// DOMAIN&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 92&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_DATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_INTERVAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAINTERVAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 10 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_TIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_TIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DEFAULT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADEFAULT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 99 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ARD_TYPE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAARD&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -99 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BIT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABIT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASALONGVARBIT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAVARBIT&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TINYINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATINYINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -6&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BIGINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABIGINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_LONGVARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGVARBINARY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASALONGBINARY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAIMAGE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -4&amp;lt;br /&amp;gt;&lt;br /&gt;
// maximale Größe = 2 GB&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_VARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAVARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_LONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASATEXT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAXML&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// -8&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// -9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WLONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGNVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASANTEXT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWLONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// Unicode&amp;lt;br /&amp;gt;&lt;br /&gt;
// -10&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_GUID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAUNIQUEIDENTIFIER&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAGUID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -11 (UUID), maximale Größe = 36&amp;lt;br /&amp;gt;&lt;br /&gt;
// -11 für ODBCVER &amp;amp;gt;= 0x0350&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Verbindungsattribute==&lt;br /&gt;
&lt;br /&gt;
Ein weiteres neues Leistungsmerkmal für die Unterstützung von SQL Anywhere 11 stellen neue Verbindungsattribute dar. Die in diesem Release enthaltenen Verbindungsattribute sind in der folgenden Tabelle aufgeführt:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Verbindungsattribut&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;ODBC-Version&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_ACCESS_MODE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_AUTOCOMMIT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_CONNECTION_DEAD&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 3.5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_LOGIN_TIMEOUT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_METADATA_ID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRACE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRACEFILE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRANSLATE_LIB&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRANSLATE_OPTION&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TXN_ISOLATION&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zukünftige Implementierungen==&lt;br /&gt;
&lt;br /&gt;
Bei Kundenanforderungen könnten die folgenden Attribute zukünftig implementiert werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Verbindungsattribut&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
allow_read_client_file&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
allow_write_client_file&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
AuthType&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
CacheReadWorkTable&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ClientNodeAddress&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskReadWorkTable&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskSyncRead&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskSyncWrite&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWaitRead&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWaitWrite&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWriteHint&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWriteHintPages&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
LockIndexID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
LockRowID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
max_priority&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
OSUser&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
priority&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
query_mem_timeout&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemActiveCurr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemExtraAvail&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantFailed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantGranted&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantWaiting&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantRequested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemWaited&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ServerNodeAddress&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ReadHint&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ReadHintScatter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
* [[DbExpress Framework-Kompatibilität|dbExpress Framework-Kompatibilität]]&lt;br /&gt;
* [[DbExpress-Datenbankanwendungen weitergeben|dbExpress-Datenbankanwendungen weitergeben]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mit Delphi für Windows arbeiten]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankspezifische_Informationen_zu_DbExpress&amp;diff=208324</id>
		<title>Datenbankspezifische Informationen zu DbExpress</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankspezifische_Informationen_zu_DbExpress&amp;diff=208324"/>
		<updated>2016-06-01T08:33:32Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Datenbankspezifische Informationen zu DbExpress}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
&lt;br /&gt;
dbExpress ist ein Datenbank-Framework, das Verbindungen zu einer Vielzahl unterstützter Datenbanken ermöglicht. Die Datenbanken können sich in vielerlei Hinsicht (z.B. bezüglich der Datentypen) unterscheiden. Dieses Thema enthält grundlegende Informationen zur Arbeit mit verschiedenen Datenbanken.&lt;br /&gt;
&lt;br /&gt;
=InterBase=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
Es wird sowohl InterBase 2009 als auch InterBase 2007 unterstützt. Dies umfasst die Unterstützung von Treiber, TField-Objekten und des Daten-Explorers.&lt;br /&gt;
&lt;br /&gt;
==To-Go==&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt auch die InterBase To-Go Edition, eine kleine, portable Version der Desktop Edition. Zu den Zielanwendungen der To-Go Edition gehören neben Software für Kleingeräte und Public Kiosks auch VAR-Anwendungen (Value Added Reseller), die mit InterBase erstellt wurden. Für die To-Go Edition muss InterBase nicht eigens auf dem Server oder dem Endbenutzer-Arbeitsplatz installiert werden.&lt;br /&gt;
&lt;br /&gt;
==dbxdrivers.ini-Einstellung==&lt;br /&gt;
&lt;br /&gt;
Im [Interbase]-Abschnitt muss die Eigenschaft VendorLib zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
InterBase:&lt;br /&gt;
&lt;br /&gt;
  VendorLib=GDS32.DLL&lt;br /&gt;
&lt;br /&gt;
To-Go:&lt;br /&gt;
&lt;br /&gt;
  VendorLib=IBTOGO.DLL&lt;br /&gt;
&lt;br /&gt;
=MS SQL=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
MS SQL Server 2008 wird vollständig unterstützt. Es muss der native MS SQL Server 2008-Client installiert werden (nicht MS SQL Server 2005). Dieser Client verwendet die Datei sqlncli10.dll anstelle von oledb.dll. Sie können den Client unter der Adresse [http://msdn.microsoft.com/en-us/sqlserver/ff658533.aspx [1]] herunterladen (Abschnitt &amp;quot;Microsoft SQL Server 2008 Native Client&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==MSSQL-Treiber benötigt für Konsolenanwendungen und Worker Threads Aufrufe von CoInitialize und CoUninitialize==&lt;br /&gt;
&lt;br /&gt;
Der MSSQL-Treiber ruft &#039;&#039;&#039;CoInitialize&#039;&#039;&#039; und &#039;&#039;&#039;CoUninitialize&#039;&#039;&#039; nicht auf. Frühere Versionen des MSSQL-Treibers (ein COM-Treiber) haben CoInitialize und CoUninitialize direkt aufgerufen. Dieses Verfahren hat aber viele Nachteile. Bei VCL-Anwendungen erfolgt der Aufruf von CoInitialize und CoUninitialize automatisch.&lt;br /&gt;
&lt;br /&gt;
Bei Anwendungen, die den MSSQL-Treiber in Konsolenanwendungen oder in Worker Threads verwenden, müssen Sie jedoch selbst für den Aufruf von CoInitialize/CoUninitialize sorgen. Wird dieser Aufruf nicht ausgeführt, wird die folgende Fehlermeldung angezeigt: &amp;quot;DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Cannot load libraryName library (error code nnn).&lt;br /&gt;
  The libraryName library may be missing from the system path&lt;br /&gt;
  or you may have an incompatible version of the library installed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hilfe zu CoInitialize finden Sie unter [http://msdn.microsoft.com/de-de/library/ms678543%28v=VS.85%29.aspx CoInitialize Function (MSDN)].&lt;br /&gt;
&lt;br /&gt;
=MYSQL=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
MYSQL Client 5.1 wird unterstützt und ist erforderlich. Wenn Sie versuchen, eine Verbindung zu einer früheren Version des Clients herzustellen, schlägt der Verbindungsaufbau fehl, und es wird folgende Fehlermeldung angezeigt:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Cannot load libraryName library (error code nnn). &lt;br /&gt;
  The libraryName library may be missing from the system path &lt;br /&gt;
  or you may have an incompatible version of the library installed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DbExpress-Framework|dbExpress-Framework]]&lt;br /&gt;
* [[DbExpress-Datentypzuordnung für unterstützte Datenbanken|dbExpress-Datentypzuordnung für unterstützte Datenbanken]]&lt;br /&gt;
*[[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Datentypzuordnung_f%C3%BCr_unterst%C3%BCtzte_Datenbanken&amp;diff=208322</id>
		<title>DbExpress-Datentypzuordnung für unterstützte Datenbanken</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Datentypzuordnung_f%C3%BCr_unterst%C3%BCtzte_Datenbanken&amp;diff=208322"/>
		<updated>2016-06-01T08:33:30Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:dbExpress-Datentypzuordnung für unterstützte Datenbanken}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
&lt;br /&gt;
Datentypen der unterstützten Datenbanken sind dbExpress-Datentypen zugeordnet. Bei Bedarf sorgt dbExpress für:&lt;br /&gt;
&lt;br /&gt;
* Eine konsistente Datentypzuordnung zwischen den Datenbanken.&lt;br /&gt;
* Eine Zuordnung logischer Datentypen zu dbExpress-Typen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Verwendung von Datentypen=&lt;br /&gt;
&lt;br /&gt;
dbExpress enthält ein breites Spektrum logischer Datentypen. dbExpress unterstützt die Zuordnung logischer Datentypen für Adaptive Server Anywhere, DB2, Informix, InterBase, MS SQL, MSDE, MYSQL, Oracle und Sybase.&lt;br /&gt;
&lt;br /&gt;
Die Zuordnungstabellen geben an, welche Datentypen an Datenbanken gesendet und von diesen abgerufen werden können (Ausnahmen siehe Anmerkungen). Diese Zuordnungen funktionieren korrekt, aber es können durchaus auch andere Zuordnungen möglich sein. Eine Datenbank könnte diese Typen beim Abfragen einer Tabelle per Vorgabe einem anderen Typ zuordnen. Der Typ Geometry gibt beispielsweise per Vorgabe ein Feld des Typs TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
&lt;br /&gt;
Für die folgende Abfrage:&lt;br /&gt;
&lt;br /&gt;
  Select * from table&lt;br /&gt;
&lt;br /&gt;
erhalten Sie im Allgemeinen Daten des Typs zurück, der in den Zuordnungstabellen angegeben ist.&lt;br /&gt;
&lt;br /&gt;
In manchen Fällen ist es wünschenswert, den Rückgabetyp festzulegen. Zum Beispiel bei einer Tabelle mit der Spalte geometryCol (Typ: Geometry) könnten Sie&lt;br /&gt;
&lt;br /&gt;
  Select geometryCol.ToString() from table&lt;br /&gt;
&lt;br /&gt;
angeben, um die Daten als String abzurufen und um zu verhindern, dass der zugeordnete Datentyp für diese Daten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Die Daten, die Sie an eine Datenbank senden, lassen sich mithilfe von Parametern ebenfalls spezifizieren. Für eine Tabelle mit der Spalte intCol des Typs int und der Spalte geometryCol des Typs Geometry könnten Sie beispielsweise die folgende Anweisung verwenden:&lt;br /&gt;
&lt;br /&gt;
  insert into table (intCol, geometryCol) values (?, ?)&lt;br /&gt;
&lt;br /&gt;
und dann die Parameterwerte, wie z.B. 3, &#039;Point(1 1)&#039;, übergeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=InterBase=&lt;br /&gt;
&lt;br /&gt;
dbExpress stellt Datentypzuordnungen für InterBase 2009, einschließlich To-Go, bereit In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und InterBase 2009.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |InterBase-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| integer&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| blob-Untertyp text&lt;br /&gt;
| TDBXDataTypes.BlobType mit dem Untertyp TDBXSubDataTypes.MemoSubType oder TDBXSubDataTypes.WideMemoSubType für eine UTF-8-Datenbank&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double precision&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| boolean&lt;br /&gt;
| TDBXDataTypes.BooleanType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=MS SQL und MSDE=&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass dbExpress alle MS SQL 2008-Datentypen unterstützt. In der folgenden Tabelle finden Sie die Datentypzuordnungen für MS SQL und MSDE.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |MS SQL-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| int&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| tinyint&lt;br /&gt;
| TDBXDataTypes.UInt8Type&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| text&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.MemoSubType&lt;br /&gt;
|-&lt;br /&gt;
| nchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| nvarchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| ntext&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.WideMemoSubType&lt;br /&gt;
|-&lt;br /&gt;
| geometry&lt;br /&gt;
| TDBXDataTypes.AnsiStringType. Benutzen Sie diesen Typ, wenn Sie Parameter verwenden. Die Datenbank gibt TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| geography&lt;br /&gt;
| TDBXDataTypes.AnsiStringType. Benutzen Sie diesen Typ, wenn Sie Parameter verwenden. Die Datenbank gibt TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| money&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| smallmoney&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| real&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| xml&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| sysname&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| datetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetime2&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| smalldatetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetimeoffset&lt;br /&gt;
| TDBXDataTypes.TimeStampOffsetType&lt;br /&gt;
|-&lt;br /&gt;
| binary&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| varbinary&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|-&lt;br /&gt;
| image&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| bit&lt;br /&gt;
| TDBXDataTypes.BooleanType&lt;br /&gt;
|-&lt;br /&gt;
| hierarchyid&lt;br /&gt;
| TDBXDataTypes.WideStringType. Verwenden Sie den Parameter TDBXDataTypes.WideStringType, die Datenbank gibt aber TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| uniqueidentifier&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| sql_variant&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=MYSQL=&lt;br /&gt;
&lt;br /&gt;
dbExpress stellt die folgenden MYSQL-Datentypzuordnungen bereit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |MYSQL-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| int&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| tinyint&lt;br /&gt;
| TDBXDataTypes.Int8Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| mediumint&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| year&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| binary&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varbinary&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| tinytext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| text&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| mediumtext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| longtext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| tinyblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| mediumblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| longblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| bit&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| TDBXDataTypes.Int8Type&lt;br /&gt;
|-&lt;br /&gt;
| enum&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| set&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firebird=&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt nun auch alle Firebird-Datentypen. In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und Firebird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |Firebird-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| integer&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Oracle=&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt jetzt alle Oracle 11g-Datentypen, einschließlich der neuen Typen XMLType, Binary_Float und Binary_Double. &lt;br /&gt;
In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und Oracle 11g.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |Oracle-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| bfile&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| clob&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| binary_float&lt;br /&gt;
| TDBXDataTypes.SingleType&lt;br /&gt;
|-&lt;br /&gt;
| binary_double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| interval day to second&lt;br /&gt;
| TDBXDataTypes.IntervalType&lt;br /&gt;
|-&lt;br /&gt;
| interval year to month&lt;br /&gt;
| TDBXDataTypes.IntervalType&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| long raw&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| nchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| nclob&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| number&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| nvarchar2&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| raw&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp with local time zone&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp with time zone&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| varchar2&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| xmltype&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Komponenten&amp;diff=208320</id>
		<title>DbExpress-Komponenten</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Komponenten&amp;diff=208320"/>
		<updated>2016-06-01T08:33:28Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:dbExpress-Komponenten}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
dbExpress setzt sich aus mehreren &amp;quot;schlanken&amp;quot; Datenbankkomponenten zusammen, die schnellen Zugriff auf SQL-Datenbankserver bieten. dbExpress stellt für jede unterstützte Datenbank ein Treiber-Framework zur Verfügung, das die serverspezifische Software an einheitliche dbExpress-Interfaces anpasst. Wenn Sie eine Datenbankanwendung weitergeben, die dbExpress verwendet, nehmen Sie eine DLL (den serverspezifischen Treiber) in die von Ihnen erstellten Anwendungsdateien auf.&lt;br /&gt;
&lt;br /&gt;
dbExpress ermöglicht Ihnen den schnellen Zugriff auf Datenbanken unter Verwendung unidirektionaler Datenmengen. Unidirektionale Datenmengen sind auf schnellen, unaufwendigen Zugriff auf Datenbankinformationen ausgelegt, wobei nur ein minimaler Zusatzaufwand entsteht. Wie andere Datenmengen können sie einen SQL-Befehl an den Datenbankserver senden und, falls der Befehl mehrere Datensätze zurückgibt, diese Datensätze entgegennehmen. Unidirektionale Datenmengen nehmen keine Zwischenspeicherung der Daten vor, wodurch sie schneller und weniger ressourcenaufwendig als andere Datenmengentypen werden. Weil sie jedoch die Datensätze nicht zwischenspeichern, sind unidirektionale Datenmengen weniger flexibel als andere Datenmengen.&lt;br /&gt;
&lt;br /&gt;
dbExpress-Verbindungen, -Tabellen, -Ansichten und -Stored Procedures, die in einer Datenstrukturansicht angezeigt werden, lassen sich per Drag&amp;amp;amp;Drop in native und verwaltete VCL-Formulare platzieren.&lt;br /&gt;
&lt;br /&gt;
Die Kategorie &#039;&#039;&#039;dbExpress&#039;&#039;&#039; der &#039;&#039;&#039;Tool-Palette&#039;&#039;&#039; enthält Komponenten, die mittels &#039;&#039;&#039;dbExpress&#039;&#039;&#039; auf Datenbankinformationen zugreifen. Dies sind:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Komponenten&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Funktion&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLConnection&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Kapselt eine dbExpress-Verbindung zu einem Datenbankserver.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLDataSet&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Repräsentiert alle über &#039;&#039;&#039;dbExpress&#039;&#039;&#039; verfügbaren Daten oder sendet Befehle an eine Datenbank, auf die über &#039;&#039;&#039;dbExpress&#039;&#039;&#039; zugegriffen wird.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLQuery&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Abfrage-Datenmenge, die eine SQL-Anweisung kapselt und es Anwendungen ermöglicht, auf die Ergebnisdatensätze zuzugreifen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLTable&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Tabellen-Datenmenge, die alle Zeilen und Spalten einer einzelnen Datenbanktabelle darstellt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLStoredProc&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine auf Stored Procedures basierende Datenmenge, die eine auf einem Datenbankserver definierte Stored Procedure ausführt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLMonitor&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Fängt die zwischen einer SQL-Verbindungskomponente und einem Datenbankserver gesendeten Informationen ab und speichert diese in einer Stringliste.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSimpleDataSet&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Client-Datenmenge, die mit internen Objekten des Typs &#039;&#039;&#039;TSQLDataSet&#039;&#039;&#039; und &#039;&#039;&#039;TDataSetProvider&#039;&#039;&#039; Daten abruft und Aktualisierungen einträgt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DbExpress verwenden|dbExpress verwenden]]&lt;br /&gt;
* [[DbExpress-Datenmengen verwenden|dbExpress-Datenmengen verwenden]]&lt;br /&gt;
* [[TSQLConnection konfigurieren|TSQLConnection konfigurieren]]&lt;br /&gt;
*[[Mit dem Daten-Explorer Verbindungsinformationen ermitteln|Mit dem Daten-Explorer Verbindungsinformationen ermitteln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daylight&amp;diff=208318</id>
		<title>Daylight</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daylight&amp;diff=208318"/>
		<updated>2016-06-01T08:33:26Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Time.h - Index|time.h}}&lt;br /&gt;
{{DISPLAYTITLE:_daylight}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Header-Datei&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
time.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;extern int _daylight;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
_daylight wird von den Uhrzeit- und Datumsroutinen verwendet. Sie legt fest, ob die Laufzeitfunktionen (mktime und localtime) die Sommerzeit berücksichtigen müssen, wenn Sie einen Datumswert bearbeiten, der normalerweise von dieser Einstellung betroffen wird. _daylight wird mit den Werten der Umgebungsvariablen TZ initialisiert und auf 1 gesetzt, wenn die Sommerzeit bei Datums- und Zeitkonvertierungen berücksichtigt werden muss. Ist TZ nicht gesetzt, wird der Wert für _daylight vom Betriebssystem bezogen.&lt;br /&gt;
&lt;br /&gt;
[[Category:C++-Referenz]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Makro-Funktionen_f%C3%BCr_Datums-_und_Uhrzeitwerte_(FireDAC)&amp;diff=208316</id>
		<title>Makro-Funktionen für Datums- und Uhrzeitwerte (FireDAC)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Makro-Funktionen_f%C3%BCr_Datums-_und_Uhrzeitwerte_(FireDAC)&amp;diff=208316"/>
		<updated>2016-06-01T08:33:24Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Vorverarbeiten von Anweisungstext (FireDAC)}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die folgende Tabelle enthält die Makro-Funktionen für Datums- und Uhrzeitwerte:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Funktion&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Lokale Ausdrucks-Engine&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_DATE( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_TIME[(Zeitgenauigkeit)]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die aktuelle lokale Uhrzeit zurück. Das Argument Zeitgenauigkeit bestimmt die Sekundengenauigkeit des zurückgegebenen Wertes.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_TIMESTAMP [(Zeitstempelgenauigkeit)]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle lokale Datum und die lokale Uhrzeit als Zeitstempelwert zurück. Das Argument Zeitstempelgenauigkeit bestimmt die Sekundengenauigkeit des zurückgegebenen Zeitstempels.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURDATE( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURTIME( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die aktuelle lokale Uhrzeit zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYNAME(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt einen Zeichen-String zurück, der den datenquellenspezifischen Namen des Tages (z.&amp;amp;nbsp;B. Sunday bis Saturday oder Sun. bis Sat. für eine Datenquelle, die Englisch verwendet, oder Sonntag bis Samstag für eine Datenquelle, die Deutsch verwendet) für den Tagesanteil von Datumsausdr zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFMONTH(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag des Monats auf Basis des Monatsfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;31 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFWEEK(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag der Woche auf Basis des Wochenfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;7 zurück, wobei 1 für Sonntag steht.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFYEAR(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag des Jahres auf Basis des Jahresfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;366 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | EXTRACT(Extrakt-Feld, Extrakt-Quelle)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt den Extrakt-Feld-Anteil aus Extrakt-Quelle zurück. Das Argument Extrakt-Quelle ist ein Datums/Zeit- oder Intervallausdruck. Das Argument Extrakt-Feld kann eines der folgenden Schlüsselwörter sein:&lt;br /&gt;
* YEAR&lt;br /&gt;
* MONTH&lt;br /&gt;
* DAY&lt;br /&gt;
* HOUR&lt;br /&gt;
* MINUTE&lt;br /&gt;
* SECOND&lt;br /&gt;
&lt;br /&gt;
Die Genauigkeit des zurückgegebenen Wertes wird durch die Implementierung festgelegt. Die Skalierung ist 0, außer wenn SECOND angegeben ist. In diesem Fall ist die Skalierung nicht kleiner als die minimale Sekundengenauigkeit des &amp;quot;Extrakt-Quelle&amp;quot;-Feldes.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | HOUR(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Stunde auf Basis des Stundenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;23 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MINUTE(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Minute auf Basis des Minutenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;59 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MONTH(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Monat auf Basis des Monatsfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;12 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MONTHNAME(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt einen Zeichen-String zurück, der den datenquellenspezifischen Namen des Monats (z.&amp;amp;nbsp;B. January bis December oder Jan. bis Dec. für eine Datenquelle, die Englisch verwendet, oder Januar bis Dezember für eine Datenquelle, die Deutsch verwendet) für den Monatsanteil von Datumsausdr zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | NOW( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum und die aktuelle Uhrzeit als Zeitstempelwert zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | QUARTER(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das Quartal in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;4 zurück, wobei 1 für das Quartal vom 1. Januar bis zum 31. März steht.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | SECOND(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Sekunde auf Basis des Sekundenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;59 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | TIMESTAMPADD(Intervall, Integer-Ausdr, Zeitstempel-Ausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt den Zeitstempel zurück, der durch Addieren von Integer-Ausdr Intervallen vom Typ Intervall mit Zeitstempel-Ausdr berechnet wird. Gültige Werte von Intervall sind die folgenden Schlüsselwörter:&lt;br /&gt;
* FRAC_SECOND (*)&lt;br /&gt;
* SECOND&lt;br /&gt;
* MINUTE&lt;br /&gt;
* HOUR&lt;br /&gt;
* DAY&lt;br /&gt;
* WEEK&lt;br /&gt;
* MONTH&lt;br /&gt;
* QUARTER&lt;br /&gt;
* YEAR&lt;br /&gt;
&lt;br /&gt;
FRAC_SECOND (Sekundenbruchteil) wird als Milliardstel einer Sekunde ausgedrückt. Die folgende SQL-Anweisung gibt beispielsweise den Namen aller Mitarbeiter zurück und das Datum ihrer einjährigen Betriebszugehörigkeit: SELECT NAME, {fn TIMESTAMPADD(‘YEAR’, 1, HIRE_DATE)} FROM EMPLOYEES. Wenn Zeitstempel-Ausdr ein Zeitwert ist und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsanteil von Zeitstempel-Ausdr auf das aktuelle Datum gesetzt, bevor der Ergebnis-Zeitstempel berechnet wird. Wenn Zeitstempel-Ausdr ein Datumswert ist und Intervall Sekundenbruchteile, Sekunden, Minuten oder Stunden angibt, wird der Zeitanteil von Zeitstempel-Ausdr auf 0 gesetzt, bevor der Ergebnis-Zeitstempel berechnet wird.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | TIMESTAMPDIFF(Intervall, Zeitstempel-Ausdr1, Zeitstempel-Ausdr2)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt die ganzzahlige Anzahl der Intervalle vom Typ Intervall zurück, um die Zeitstempel-Ausdr2 größer als Zeitstempel-Ausdr1 ist. Gültige Werte von Intervall sind die folgenden Schlüsselwörter:&lt;br /&gt;
* FRAC_SECOND (*)&lt;br /&gt;
* SECOND&lt;br /&gt;
* MINUTE&lt;br /&gt;
* HOUR&lt;br /&gt;
* DAY&lt;br /&gt;
* WEEK&lt;br /&gt;
* MONTH&lt;br /&gt;
* QUARTER&lt;br /&gt;
* YEAR&lt;br /&gt;
&lt;br /&gt;
FRAC_SECOND (Sekundenbruchteil) wird als Milliardstel einer Sekunde ausgedrückt. Die folgende SQL-Anweisung gibt beispielsweise den Namen aller Mitarbeiter zurück und die Anzahl der Jahre ihrer Betriebszugehörigkeit: SELECT NAME, {fn TIMESTAMPDIFF(‘YEAR’, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES. Wenn der Zeitstempelausdruck ein Zeitwert ist und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsanteil dieses Zeitstempels auf das aktuelle Datum gesetzt, bevor die Differenz zwischen den beiden Zeitstempeln berechnet wird. Wenn einer der beiden Zeitstempelausdrücke ein Datumswert ist und Intervall Sekundenbruchteile, Sekunden, Minuten oder Stunden angibt, wird der Zeitanteil dieses Zeitstempels auf 0 gesetzt, bevor die Differenz zwischen den beiden Zeitstempeln berechnet wird.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | WEEK(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Woche des Jahres auf Basis des Wochenfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;53 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | YEAR(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das Jahr auf Basis des Jahresfeldes in Datumsausdr als Integerwert zurück. Der Bereich ist von der Datenquelle abhängig.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Einige DBMSs können nicht mit FRAC_SECOND arbeiten.&lt;br /&gt;
&lt;br /&gt;
[[Category:FireDAC]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Server-Anwendung&amp;diff=208314</id>
		<title>DataSnap-Server-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Server-Anwendung&amp;diff=208314"/>
		<updated>2016-06-01T08:33:21Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn Sie auf TObject basierte Typen auf einem C++-DataSnap-Server bereitstellen möchten, müssen sich die Typen in einem {{Delphi}}-Package befinden. Wechseln Sie zum Aktivieren von {{Delphi}}-Packages zu &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projekt &amp;amp;gt; Optionen &amp;amp;gt; Packages&#039;&#039;&#039;&amp;lt;/font&amp;gt;, und wählen Sie die Option &#039;&#039;&#039;Laufzeit-Packages verwenden&#039;&#039;&#039; aus. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
&lt;br /&gt;
* [[Erstellen eines DataSnap-Servers|Erstellen eines DataSnap-Servers]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
* [[Erstellen von DataSnap-Servermethoden-Proxies|Erstellen von DataSnap-Servermethoden-Proxies]]&lt;br /&gt;
* [[Bereitstellen von DataSnap-Servermethoden|Bereitstellen von DataSnap-Servermethoden]]&lt;br /&gt;
* [[Verwendung von Callback-Funktionen|Verwendung von Callback-Funktionen]]&lt;br /&gt;
* [[Eigenschaft LifeCycle der Serverklasse|Eigenschaft LifeCycle der Serverklasse]]&lt;br /&gt;
* [[Überwachen und Steuern von DataSnap-TCP/IP-Verbindungen|Überwachen und Steuern von DataSnap-TCP/IP-Verbindungen]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden#Client-Anwendung erstellen|Tutorial: DataSnap-Server/Client]]&lt;br /&gt;
* [[Steuerelemente für DataSnap-Server|Steuerelemente für DataSnap-Server]][[en:DataSnap Server Application|en:DataSnap Server Application]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-REST-Nachrichtenprotokoll&amp;diff=208312</id>
		<title>DataSnap-REST-Nachrichtenprotokoll</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-REST-Nachrichtenprotokoll&amp;diff=208312"/>
		<updated>2016-06-01T08:33:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-REST}}&lt;br /&gt;
&lt;br /&gt;
Dieses Thema beschreibt das REST-Nachrichtenprotokoll für DataSnap, das den Remote-Aufruf von Servermethoden sowie die Registrierung von Heavyweight-Callbacks ermöglicht. Anhand der Informationen in diesem Thema können Sie in jeder beliebigen Sprache Clients implementieren, die mit einem DataSnap-Server über HTTP-Anforderungen kommunizieren können.&lt;br /&gt;
&lt;br /&gt;
==Remote-Methodenaufruf==&lt;br /&gt;
&lt;br /&gt;
Wenn ein DataSnap-Server über eine aktive Komponente zur Behandlung von HTTP-Verbindungen verfügt, wird ein Nachrichtenprotokoll bereitgestellt, wobei HTTP-Anforderungen an den Server gesendet werden können, um public-Methoden einer für den Server mit einer TDSServerClass-Komponente registrierten Klasse aufzurufen. Am einfachsten rufen Sie eine Servermethode über eine GET-Anforderung mit dem folgenden URL und ohne Inhalt im Nachrichtenrumpf auf:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[ClassName]/[MethodName]/[ParamValue]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ParamValue&amp;lt;/code&amp;gt; sind optional. &amp;quot;datasnap&amp;quot; und &amp;quot;rest&amp;quot; sind gewissermaßen auch optional und müssten – abhängig von den Werten der Eigenschaften DSContext und RESTContext für die HTTP-Verbindung auf dem Server – geändert werden.&lt;br /&gt;
&lt;br /&gt;
===Parameter in dem URL===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ParamValue&amp;lt;/code&amp;gt; repräsentiert eine durch Schrägstrich (/) getrennte Liste mit Parameterwerten, die den für die aufzurufende Servermethode erforderlichen Eingabeparametern entsprechen. Wenn die Servermethode (Funktion/Prozedur) keine Eingabeparameter hat, dann darf hinter dem Methodennamen in dem URL nichts mehr stehen. Durch zwei Schrägstriche (//) im Abschnitt des URLs, der die Parameterwerte repräsentiert, wird der Wert des Parameters an dieser Indexposition auf einen leeren String gesetzt.&lt;br /&gt;
&lt;br /&gt;
Die auf diese Weise übergebenen Werte müssen URL-sicher verschlüsselt sein, was auch für die Verschlüsselung von Unicode-Zeichen gilt. Werte mit einer JSON-Objekt- oder JSON-Array-Repräsentation dürfen nicht auf diese Weise übergeben werden: sie müssen im Rumpf der HTTP-Anforderung übergeben werden, und der Anforderungstyp muss POST oder PUT sein.&lt;br /&gt;
&lt;br /&gt;
===Parameter im Anforderungsrumpf===&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine Servermethode aufrufen möchten, die einen nicht von einer GET- oder DELETE-Anforderung unterstützten Eingabeparameter hat (z.B. ein Parameter, der nicht als String, Zahl, Boolean oder Null dargestellt werden kann), oder wenn Sie einfach einen oder mehrere Parameter im Inhalt der Anforderung übergeben möchten, müssen Sie den Anforderungstyp POST oder PUT verwenden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie beispielsweise eine Servermethode wie die folgende aufrufen möchten:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  function TServerMethods1.updateEchoAttribute(Key: String; Obj: TJSONObject): String;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Dann sollte Ihre Anforderung folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  POST /datasnap/rest/TServerMethods1/EchoAttribute/Attr1 HTTP/1.1&lt;br /&gt;
  ....*additional headers*...&lt;br /&gt;
  Accept: application/json&lt;br /&gt;
  Content-Type: text/plain;charset=UTF-8&lt;br /&gt;
  &lt;br /&gt;
  {&amp;quot;Attr1&amp;quot;:&amp;quot;ValueToReturn&amp;quot;}&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Diese Anforderung enthält einige Einträge, die näher erläutert werden müssen. Beachten Sie zunächst, dass der übergebene Methodenname &amp;quot;EchoAttribute&amp;quot; und nicht &amp;quot;updateEchoAttribute&amp;quot; lautet. Standardmäßig wird nämlich das Präfix &amp;quot;update&amp;quot; jeder Methode zugeordnet, die mit POST aufgerufen wird. Ebenso wird das Präfix &amp;quot;cancel&amp;quot; für DELETE-Anforderungen und das Präfix &amp;quot;accept&amp;quot; für PUT-Anforderungen verwendet. Diese Art der Präfixverwendung kann durch Setzen des Methodennamens in Anführungszeichen vermieden werden. Die erste Zeile der Anforderung würde dann folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 POST /datasnap/rest/TServerMethods1/%22updateEchoAttribute%22/Attr1 HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
Diese Anforderung ruft auch die updateEchoAttribute-Servermethode auf, aber die Anführungszeichen verhindern, dass ein zusätzliches &amp;quot;update&amp;quot; vor den angegebenen Servernamen gesetzt wird. Das Setzen des Methodennamens in Anführungszeichen ermöglicht zudem den Aufruf von Servermethoden mit POST, PUT oder DELETE, denen keine dem Anforderungstyp entsprechenden Namen vorangestellt werden. Falls die Servermethode zum Beispiel folgendermaßen lautet:&lt;br /&gt;
&lt;br /&gt;
 function TServerMethods1.EchoAttribute(Key: String; Obj: TJSONObject): String;&lt;br /&gt;
&lt;br /&gt;
Dann wäre das Setzen des Methodennamens in Anführungszeichen erforderlich, da der Wert eines TJSONObject in dem Anforderungs-URL nicht unterstützt wird. Das heißt, eine GET-Anforderung, der einzige Anforderungstyp, der standardmäßig kein Methodenpräfix voraussetzt, kann nicht verwendet werden. Die POST-Anforderung würde folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 POST /datasnap/rest/TServerMethods1/%22EchoAttribute%22/Attr1 HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
All diese Beispiele haben dasselbe Ergebnis, wobei die Servermethode mit &amp;quot;Attr1&amp;quot; als Wert des Parameters &amp;lt;code&amp;gt;Key&amp;lt;/code&amp;gt; aufgerufen wird und der Wert von Obj ein JSON-Objekt ist, das eine Eigenschaft &amp;quot;Attr1&amp;quot; und einen zugehörigen Wert hat. Der Inhalt der Antwort enthält das Ergebnis des Aufrufs der Servermethode, das in diesem Beispiel der String &amp;quot;ValueToReturn&amp;quot; wäre.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mehrere Parameterwerte in dem Anforderungsinhalt übergeben möchten, müssen Sie sie in der richtigen Reihenfolge in ein JSON-Array setzen, und dieses Array als Wert eines JSON-Objektpaars mit dem Schlüsselwort &amp;quot;_parameters&amp;quot; angeben. Das JSON-Ergebnisobjekt muss als String dargestellt und folgendermaßen als Inhalt der Anforderung gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;_parameters&amp;quot;:[&amp;quot;Param1&amp;quot;, &amp;quot;Param2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
Bei diesem Format werden zuerst die Eingabeparameter aus dem Anforderungs-URL und dann die übrigen Eingabewerte der Reihenfolge nach aus dem Array _parameters übernommen.&lt;br /&gt;
&lt;br /&gt;
In der Anforderung sind Abfrageparameter zulässig. Der Benutzer erhält dann aus Servermethoden Zugriff auf die im URL übergebenen Abfrageparameter durch Abrufen der &#039;&#039;&#039;Aufrufs-Metadaten&#039;&#039;&#039; (mit einem Aufruf von &#039;&#039;&#039;GetInvocationMetadata()&#039;&#039;&#039; nach dem Hinzufügen der [[lib_de:Data.DBXPlatform|DBXPlatform]] zu der &#039;&#039;&#039;uses&#039;&#039;&#039;-Klausel) und Zugreifen auf die Liste der gespeicherten Parameter. Dem HTTP-Dienst des Servers wurde das Ereignis &#039;&#039;&#039;FormatResult&#039;&#039;&#039; hinzugefügt, mit dem die JSON-Antwort in einem beliebigen Format für Methodenaufrufe zurückgegeben werden kann.&lt;br /&gt;
&lt;br /&gt;
===Aufrufantwort===&lt;br /&gt;
&lt;br /&gt;
Die von einer Aufrufanforderung zurückgegebene Antwort hat einen Antworttext, der eine String-Repräsentation eines JSON-Objekts ist, das etwa folgendermaßen aussieht:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[&amp;quot;ValueToReturn&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
Bei korrektem Zerlegen in eine JSON-Objektinstanz können Sie für die Eigenschaft &amp;quot;result&amp;quot; das JSON-Array ermitteln. Dieses Array enthält die Werte für alle Parameter in der Reihenfolge ihrer Anordnung in der Signatur der Servermethode, die zurückgegeben werden (out, var, Ergebnistypen). Das Ergebnis ist immer der letzte Eintrag in dem Array, und in diesem Beispiel ist es ein JSON-String mit dem Wert, der von der Implementierung der Servermethode EchoAttribute zurückgegeben würde.&lt;br /&gt;
&lt;br /&gt;
Wenn während des Aufrufs auf dem Server ein Fehler auftritt, wie z.B. eine abgelaufene Sitzung, ein unbefugter Benutzer oder ungültige Eingabewerte, dann enthält das zurückgegebene JSON-Objekt anstatt einer &amp;quot;result&amp;quot;-Eigenschaft eine &amp;quot;error&amp;quot;- oder &amp;quot;SessionExpired&amp;quot;-Eigenschaft, wie die folgende:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;SessionExpired&amp;quot;:&amp;quot;Die angegebene Sitzung ist abgelaufen, weil sie inaktiv war oder eine ungültige Sitzungs-ID hatte&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
===Festlegen des Stream-Antworttyps===&lt;br /&gt;
&lt;br /&gt;
Wenn das Ergebnis eines Methodenaufrufs ein TStream-Objekt ist, dann kann der Stream entweder als JSON-Array oder als Inhalts-Stream der Antwort zurückgegeben werden. Mit dem URL-Parameter &amp;quot;json&amp;quot; können Sie folgendermaßen festlegen, ob ein JSON-Array oder ein Inhalts-Stream zurückgegeben werden soll:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[Class]/[Method]/?json=true&lt;br /&gt;
&lt;br /&gt;
Sie können den Wert auf &amp;quot;True&amp;quot; oder &amp;quot;False&amp;quot; setzen. Bei &amp;quot;True&amp;quot; wird das Ergebnis immer als JSON-Array zurückgegeben. Bei &amp;quot;False&amp;quot; wird das Ergebnis als Inhalts-Stream zurückgegeben, sofern keine anderen var/out/result-Parameter zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==Authentifizierung==&lt;br /&gt;
&lt;br /&gt;
Wenn für den Server eine Authentifizierung erforderlich ist, dann müssen Sie im &amp;quot;Autorisierungs&amp;quot;-Header der Anforderung Ihre Authentifizierungsdaten (Benutzername und Passwort) korrekt formatiert übergeben. Dies ist aber nur erforderlich, wenn Sie keine Sitzungs-ID in der Anforderung angeben. Das Format des Wertes des Autorisierungs-Headers lautet:&lt;br /&gt;
&lt;br /&gt;
 Basic base64(Benutzer:Passwort)&lt;br /&gt;
&lt;br /&gt;
Oder, falls der Benutzername beispielsweise &amp;quot;admin&amp;quot; und das Passwort ebenfalls &amp;quot;admin&amp;quot; ist:&lt;br /&gt;
&lt;br /&gt;
 Basic YWRtaW46YWRtaW4=&lt;br /&gt;
&lt;br /&gt;
Der String für die base64-Kodierung muss ein einzelner String sein, der den Namen und das Passwort durch Doppelpunkt getrennt enthält.&lt;br /&gt;
&lt;br /&gt;
==Anforderungsfilter==&lt;br /&gt;
&lt;br /&gt;
DataSnap verwendet zum Filtern von Ergebnissen das Konzept der Anforderungsfilter. Diese vordefinierten Filter verbinden in eine API, mit der in dem URL die Filter für den jeweiligen Parameter und die an diesen Filter zu übergebenden Werte festgelegt werden können. Eine Serverfunktion könnte z.B. einen sehr großen String zurückgeben, wovon Sie aber möglicherweise nur die ersten Zeichen benötigen. In diesem Fall können Sie mit dem SubString-Filter den Bereich des Strings festlegen, an dem Sie interessiert sind. Das folgende Beispiel ist ein URL für eine Serverfunktion mit einem einzelnen Eingabeparameter und einem String-Ergebnis:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[Class]/[Method]/[ParamValue]?ss.r=1,3&lt;br /&gt;
&lt;br /&gt;
Der Teil nach dem &amp;quot;?&amp;quot; definiert, welcher Filter für welche(n) Parameter verwendet werden soll. In diesem Fall wird für den Rückgabe-String (wenn kein Parameterindex angegeben ist, wird der Filter auf das Ergebnis angewendet) mit der Bereichsfunktion des SubString-Filters festgelegt, dass das Ergebnis ein aus drei Zeichen bestehender Teilstring sein soll, der mit dem zweiten Zeichen des Ergebnisses beginnt.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden Sie unter [[Anforderungsfilter|Anforderungsfilter]].&lt;br /&gt;
&lt;br /&gt;
==Sitzungsinformationen==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine Servermethode aufrufen, die Sie nicht in einer Sitzungs-ID der Anforderung übergeben haben, wird eine neue Sitzung auf dem Server erstellt, und die Sitzungs-ID wird in dem &amp;quot;Pragma&amp;quot;-Header bereitgestellt. Der für diesen Header gespeicherte Wert enthält zwei Schlüssel, &amp;quot;dssession&amp;quot; und &amp;quot;dssessionexpires&amp;quot;. Der erste ist die ID der Sitzung auf dem Server und der zweite ist eine Schätzung der verbleibenden Millisekunden bis zum Ablauf der Sitzung. Wenn &amp;quot;dssessionexpires&amp;quot; nicht angegeben oder ein negativer Wert ist, dann läuft die Sitzung nicht ab und muss geschlossen werden, wenn sie vom Client nicht mehr benötigt wird. Die Sitzungs-ID müssen Sie in dem &amp;quot;Pragma&amp;quot;-Header jeder weiteren Anforderung im folgenden Format übergeben:&lt;br /&gt;
&lt;br /&gt;
 dssession=[Sitzungs-ID]&lt;br /&gt;
&lt;br /&gt;
Anhand der Millisekunden bis zum Sitzungsablauf können Sie feststellen, ob die Sitzungs-ID nicht mehr gültig ist und entscheiden, sie nicht mit künftigen Anforderungen zu übergeben, weil sie wahrscheinlich ungültig wäre und einen SessionExpired-Fehler liefern würde. Wenn Sie ein SessionExpired-Ergebnis vom Server erhalten, müssen Sie die gespeicherte Sitzungs-ID löschen und zulassen, dass der Server bei der nächsten Anforderung eine neue ID vergibt.&lt;br /&gt;
&lt;br /&gt;
Um die Sitzung vor deren Ablauf zu schließen, führen Sie eine GET-Anforderung mit dem folgenden URL aus und übergeben im Pragma-Header der Anforderung die Sitzungs-ID, wie oben erläutert:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/CloseSession/&lt;br /&gt;
&lt;br /&gt;
Damit wird die Sitzung mit der angegebenen ID beendet und bei Erfolg der folgende Antworttext zurückgegeben (bei Misserfolg wird die SessionExpired-Meldung zurückgegeben):&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[true]}&lt;br /&gt;
&lt;br /&gt;
==Zwischenspeicherung von Sitzungsparametern==&lt;br /&gt;
&lt;br /&gt;
Eine Verwendung für Sitzungen auf dem Server ist die optionale Speicherung von Parameterwerten aus früheren Aufrufen, damit Ergebnisse eines Methodenaufrufs mehrfach abgerufen werden können, ohne dass die Methode selbst erneut aufgerufen werden muss. Parameter, für die eine JSON-Objekt- oder JSON-Array-Repräsentation erforderlich ist, wie z.B. Streams und benutzerdefinierte Typen, können im Zwischenspeicher gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
Um festzulegen, dass der Zwischenspeicher verwendet werden soll, müssen Sie in der Anforderung den Header-Wert &amp;quot;Accept&amp;quot; auf &amp;quot;application/rest&amp;quot; setzen. Wenn Sie eine Servermethode aufrufen, deren Ergebnis beispielsweise ein TJSONObject ist, wird ein neuer Zwischenspeichereintrag erstellt, der den Zugriff auf das JSON-Ergebnisobjekt ermöglicht. Der vom Aufruf zurückgegebene Wert hat die folgende Form:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[&amp;quot;0/0/0&amp;quot;],&amp;quot;cacheId&amp;quot;:0,&amp;quot;cmdIndex&amp;quot;:0}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;0/0/0&amp;quot; steht an der Stelle, an der das tatsächliche Aufrufergebnis erscheinen würde. Dabei handelt es sich um den Bezeichner und den relativen Pfad zu dem jeweiligen Eintrag im Zwischenspeicher. Das Format dieses relativen Pfades kann folgendermaßen interpretiert werden:&lt;br /&gt;
&lt;br /&gt;
 [Zwischenspeicher-Eintrags-ID]/[Befehlsindex]/[Parameterindex]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zwischenspeicher-Eintrags-ID&amp;lt;/code&amp;gt; ist der eindeutige Bezeichner für den Methodenaufruf, den Sie ausführen. Nur Ausführungen, die Ergebnisse im Zwischenspeicher speichern, erhalten eindeutige Bezeichner. &amp;lt;code&amp;gt;Befehlsindex&amp;lt;/code&amp;gt; gibt an, zu welchem Befehl der Ausführung das Ergebnis gehört. Dies ist nur ein Wert ungleich Null, wenn es sich um eine Stapelausführung (gleichzeitig mehrere Servermethoden) handelt. &amp;lt;code&amp;gt;Parameterindex&amp;lt;/code&amp;gt; ist der Index des komplexen Parameters, der zurückgegeben werden soll. Der Index beginnt bei Null und basiert auf den komplexen Parametern des Befehls, nicht auf allen Parametern des Befehls.&lt;br /&gt;
&lt;br /&gt;
Die weiteren Werte von &amp;quot;cacheId&amp;quot; und &amp;quot;cmdIndex&amp;quot; sind dieselben Werte, die als die ersten beiden Zahlen in &amp;quot;0/0/X&amp;quot; erscheinen. Wenn für den Methodenaufruf mehr als ein zwischengespeichertes Ergebnis vorhanden ist, enthält das Array &amp;quot;result&amp;quot; mehrere Einträge, die aber alle die &amp;quot;cacheId&amp;quot;- und &amp;quot;cmdIndex&amp;quot;-Werte gemeinsam nutzen, da sie Teil desselben zwischengespeicherten Eintrags und Ergebnisse desselben Methodenaufrufs sind.&lt;br /&gt;
&lt;br /&gt;
Mit diesen relativen Pfaden erstellen Sie einen Zwischenspeicher-URL. Der Zwischenspeicher-URL verwendet &amp;quot;cache&amp;quot; (CacheContext) anstelle von &amp;quot;rest&amp;quot; (RESTContext), und ihm wird dann der im Aufrufergebnis zurückgegebene relative URL nachgestellt.&lt;br /&gt;
&lt;br /&gt;
Zwischenspeicher-URLs unterstützen die Anforderungstypen GET und DELETE. Wenn GET gesendet wird, sind die folgenden URLs verfügbar:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt ein JSON-Objekt zurück, das den Inhalt des Zwischenspeichers beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt ein JSON-Objekt zurück, das das Zwischenspeicherungsobjekt mit der angegebenen ID beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)/(CmdIndex)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt eine JSON-Repräsentation des angegebenen Befehls zurück.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)/(CmdIndex)/(ParameterIndex)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt den tatsächlichen Parameter als JSON oder Stream zurück.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei einem DELETE-Befehl werden die folgenden URLs unterstützt:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Löscht alle zwischengespeicherten Einträge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Löscht den zwischengespeicherten Eintrag und alle zugehörigen Befehle/Parameter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Zwischenspeicher nicht leeren, wird er beim Ablauf der Sitzung geleert und freigegeben. &lt;br /&gt;
Weitere Informationen finden Sie unter [[Zwischenspeicherung von DBX-Parametern|Zwischenspeicherung von DBX-Parametern]].&lt;br /&gt;
&lt;br /&gt;
==Heavyweight-Callbacks==&lt;br /&gt;
&lt;br /&gt;
Heavyweight-REST-Callbacks ermöglichen einem Client eine HTTP-Anforderung mit langen Ausführungszeiten zu senden, die sich wie eine beim Server registrierte Callback-Funktion verhält. Der Anforderung sind Informationen zugeordnet, die dem Server mitteilen, wie er zu antworten hat. Wird eine Antwort abgerufen, wird eine neue Anforderung an den Server gesendet, um die Callback-Funktion zurück in einen empfangsbreiten Zustand zu versetzen.&lt;br /&gt;
&lt;br /&gt;
===Registrieren einer Heavyweight-Callback-Funktion (Client-Kanal)===&lt;br /&gt;
&lt;br /&gt;
Die ursprüngliche Anforderung, die das Heavyweight-Callback-Handshake startet, sollte folgendermaßen formatiert und als GET-Anforderung gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/ConsumeClientChannel/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]//&lt;br /&gt;
&lt;br /&gt;
Mit diesem Handshake wird eigentlich eine Callback-Funktion registriert, die selbst eine oder mehrere Callbacks enthält, zu denen sie verzweigt. SCN ist der Name des Serverkanals, für den diese Callback-Funktion empfangsbereit sein soll. Dieser Wert kann alles sein, was der Server möglicherweise senden oder mitteilen kann. SCNS ist eine durch Komma getrennte Liste der Kanalnamen des Servers für die registrierte Callback-Funktion. Diese Liste kann leer (die Callback-Funktion verwendet einfach den &amp;lt;code&amp;gt;ServerChannelName&amp;lt;/code&amp;gt; des Kanals) oder eine Liste sein, die dem &amp;lt;code&amp;gt;ServerChannelName&amp;lt;/code&amp;gt; des Kanals hinzugefügt wird. Weitere Informationen dazu finden Sie in der DocWiki-Dokumentation über Heavyweight-REST-Callbacks. Wenn der Server etwa folgendermaßen sendet:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  Val := TJSONString.Create(Memo1.Text);&lt;br /&gt;
  [DSServer].BroadcastMessage(&#039;MemoChannel&#039;, Val);&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Dann soll der Wert von SCN als &amp;quot;MemoChannel&amp;quot; übergeben werden, damit Sie diesen speziellen Broadcast empfangen können.&lt;br /&gt;
&lt;br /&gt;
CHID ist eine eindeutige ID für den Callback-Kanal des Clients. Dies kann Verschiedenes sein, aber der Aufruf schlägt fehl, wenn CHID nicht für die bereits auf dem Server vorhandenen Werte eindeutig ist. CBID ist eine eindeutige ID für die erste Callback-Funktion des Callback-Kanals des Clients. Weil ein Callback-Kanal immer mindestens eine Callback-Funktion enthalten muss, ist dieser Parameter erforderlich. Weitere untergeordnete Callbacks können später registriert werden. ST ist ein Sicherheits-Token, das Sie hier definieren. In allen künftigen Aufrufen zur Änderung des Client-Kanals, wie z.B. Hinzufügen oder Entfernen von Callbacks, müssen Sie dieses Sicherheits-Token angeben, um sich bei dem zu modifizierenden Kanal zu validieren. Der letzte Parameter (//) wird beim Registrieren des Kanals als leerer String übergeben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Registrierung erfolgreich erstellt wurde, wird sofort eine Antwort zurückgegeben, die etwa folgendermaßen aussieht:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;invoke&amp;quot;:[&amp;quot;cb12345&amp;quot;,{&amp;quot;created&amp;quot;:true},1]}]}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cb12345&amp;quot; ist dabei die eindeutige ID der Callback-Funktion, die bei der Erstellung des Client-Kanals (CBID) registriert wurde. Senden Sie sofort eine weitere Anforderung (siehe dazu die Schritte weiter unten), damit die Callback-Funktion aktiv bleibt.&lt;br /&gt;
&lt;br /&gt;
===Stoppen von Heavyweight-Callbacks===&lt;br /&gt;
&lt;br /&gt;
Senden Sie zum Stoppen einer zuvor erstellten Heavyweight-Callback-Funktion eine GET-Anforderung an den folgenden URL:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/CloseClientChannel/[SCN]/[CHID]/[ST]&lt;br /&gt;
&lt;br /&gt;
SCN, CHID und ST sind dabei dieselben Werte, die beim ersten Erstellen übergeben wurden.&lt;br /&gt;
&lt;br /&gt;
===Hinzufügen einer Callback-Funktion zu einem Client-Kanal===&lt;br /&gt;
&lt;br /&gt;
Ein Client-Kanal kann mehrere verschachtelte Callback-Funktionen enthalten. Es muss aber mindestens eine vorhanden sein. Senden Sie zum Registrieren einer weiteren Callback-Funktion bei dem Client-Kanal den folgenden URL mit einer GET-Anforderung:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/RegisterClientCallbackServer/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]/&lt;br /&gt;
&lt;br /&gt;
SCN, CHID, SCNS und ST sind dabei dieselben Werte, die Sie beim Erstellen des Client-Kanals angegeben haben, und CBID ist eine für den Client-Kanal eindeutige ID für die neue Callback-Funktion.&lt;br /&gt;
&lt;br /&gt;
===Entfernen einer Callback-Funktion aus einem Client-Kanal===&lt;br /&gt;
&lt;br /&gt;
Callbacks können aus einem Client-Kanal entfernt werden. Wenn Sie die letzte Callback-Funktion entfernen, wird der Kanal geschlossen. Senden Sie zum Entfernen einer Callback-Funktion den folgenden URL mit einer GET-Anforderung:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/UnregisterClientCallback/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]/&lt;br /&gt;
&lt;br /&gt;
SCN, CHID, SBID, SCNS und ST sind dabei dieselben Werte, die Sie beim Registrieren der Callback-Funktion (entweder mit der ConsumeClientChannel- oder der RegisterClientCallbackServer-Methode) übergeben haben.&lt;br /&gt;
&lt;br /&gt;
===Antworten vom Server===&lt;br /&gt;
&lt;br /&gt;
Eine Antwort auf eine Heavyweight-Callback-Anforderung kann in verschiedenen Situationen auftreten. Wie bereits weiter oben erwähnt, erfolgt eine, wenn der Kanal erfolgreich erstellt wurde. Eine weitere, wenn die Heavyweight-Callback-Funktion geschlossen wird. Die häufigste Antwort ist jedoch ein Broadcast oder eine Nachricht. Nachrichten von einem Server zielen auf eine einzelne Callback-Funktion eines Client-Kanals ab, während Broadcasts an alle Callbacks ausgegeben werden sollten.&lt;br /&gt;
&lt;br /&gt;
Bei einer Callback-Funktion mit der ID &amp;quot;cd12345&amp;quot; könnte ein Antworttext einer gesendeten Anforderung folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;invoke&amp;quot;:[&amp;quot;cb12345&amp;quot;,&amp;quot;Hello World&amp;quot; ,1]}]}&lt;br /&gt;
&lt;br /&gt;
Dieser Antworttext bedeutet, dass ein Aufruf (Nachricht) vom Server mit dem Inhalt gesendet wurde, dass die Callback-Funktion mit der ID &amp;quot;cd12345&amp;quot; aufgerufen und der String-Wert &amp;quot;Hello World&amp;quot; vom Typ 1 übergeben werden soll. Typ 1 bedeutet, dass der Wert als JSON behandelt werden soll. Typ 2 bedeutet, dass er eine JSON-Objektrepräsentation eines Benutzerobjekts ist. Typ 1 ist vermutlich gebräuchlicher. Der Wert muss kein String sein, er kann ein beliebiger JSON-Wert sein.&lt;br /&gt;
&lt;br /&gt;
Sendet der Server einen Broadcast, dann wird er an alle Callbacks des Client-Kanals gerichtet und enthält daher keine ID. Der Antworttext würde folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;broadcast&amp;quot;:[&amp;quot;Hello World&amp;quot;,1]}]}&lt;br /&gt;
&lt;br /&gt;
Wird die Heavyweight-Callback-Funktion geschlossen, wird der folgende Antworttext zurückgegeben:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;close&amp;quot;:true}]}&lt;br /&gt;
&lt;br /&gt;
===Beantworten einer Antwort vom Server===&lt;br /&gt;
&lt;br /&gt;
Wenn die Heavyweight-Callback-Anforderung eine Antwort vom Server erhält, müssen Sie die Botschaft so schnell wie möglich behandeln und dann eine neue Anforderung ausführen. Die Anforderung, die Sie senden, ist fast identisch mit der Anforderung zum Registrieren des Client-Kanals, mit nur einigen kleinen Unterschieden. Erstens muss der Befehl als POST gesendet werden. Der URL der Anforderung würde folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/ConsumeClientChannel/[SCN]/[CHID]//[ST]&lt;br /&gt;
&lt;br /&gt;
CBID ist ein leerer String (weil keine neuen Callbacks registriert werden) und weil es sich um ein POST handelt, wird der letzte Parameter (ein leerer String; zwei Schrägstriche für die Registrierung des Client-Kanals) weggelassen. Dieser wird im Anforderungsrumpf übergeben.&lt;br /&gt;
&lt;br /&gt;
Der Anforderungsrumpf muss das vom Client-Kanal zurückgegebene Ergebnis (das ein JSON-Wert im String-Format sein kann) enthalten. Im Allgemeinen hat es sich bewährt entweder &amp;quot;True&amp;quot; oder &amp;quot;False&amp;quot; zurückzugeben. Wenn die Benachrichtigung ausgeführt wurde, sollte das Ergebnis der Wert sein, der für die spezifische, aufzurufende Callback-Funktion zurückgegeben wurde. Wenn der Broadcast ausgeführt wurde, sollte der zurückgegebene Wert auf allen von den Callbacks gelieferten Werten basieren (z.B. &amp;quot;False&amp;quot; außer alle Callbacks haben &amp;quot;True&amp;quot; zurückgegeben).&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden Sie unter [[Codeintensive REST-Callback-Funktionen|Codeintensive REST-Callback-Funktionen]].&lt;br /&gt;
&lt;br /&gt;
==Ein Beispiel für Übertragungen mit PHP DataSnap REST==&lt;br /&gt;
&lt;br /&gt;
Das folgende native PHP-Codebeispiel verwendet DataSnap REST für die Übergabe eines Arrays.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;?php&lt;br /&gt;
  // type   -&amp;gt; unit name (uCidade) . object name (TCidade)&lt;br /&gt;
  // fileds -&amp;gt; fields must be the same in declared class&lt;br /&gt;
  $cidade = array( &amp;quot;type&amp;quot; =&amp;gt; &amp;quot;uCidade.TCidade&amp;quot; , &amp;quot;id&amp;quot; =&amp;gt; 1 , &amp;quot;fields&amp;quot; =&amp;gt; array ( &amp;quot;FId&amp;quot; =&amp;gt; 41000 , &amp;quot;FDescricao&amp;quot; =&amp;gt; &amp;quot;LINS&amp;quot; , &amp;quot;FUF&amp;quot; =&amp;gt; &amp;quot;SP&amp;quot; ) );&lt;br /&gt;
  $url  = &#039;http://localhost:8080/datasnap/rest/TServerMethodsMain/%22AddCidade%22/&#039; ;&lt;br /&gt;
  $ch = curl_init() ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_HTTPHEADER, array ( &amp;quot;Accept: application/json&amp;quot; , &amp;quot;Content-Type: text/xml; charset=utf-8&amp;quot; ) ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_HEADER , FALSE ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_POST , TRUE ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_URL , $url ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode( $cidade ) ) ;&lt;br /&gt;
  $result = curl_exec( $ch ) ;&lt;br /&gt;
 &lt;br /&gt;
  echo &#039;&amp;lt;pre&amp;gt;&#039;;&lt;br /&gt;
  print_r ($result);&lt;br /&gt;
  echo &#039;&amp;lt;/pre&amp;gt;&#039;;&lt;br /&gt;
  ?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; RAD PHP hat einen eigenen Proxy-Generator, es generiert aber kein [[lib_de:System.JSON.TJSONObject|TJSONObject]], wie aus dem obigen Beispiel ersichtlich.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-REST-Client-Module&amp;diff=208310</id>
		<title>Experte für DataSnap-REST-Client-Module</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-REST-Client-Module&amp;diff=208310"/>
		<updated>2016-06-01T08:33:13Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei|Datei (Menü)}}&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;&amp;quot;&amp;gt;hcDDataSnapRESTClientModule&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{Delphi}}-Projekte &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-REST-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{CBuilderUI}} &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-REST-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Der Experte für DataSnap-Client-Module ist nur verfügbar, nachdem Sie einen DataSnap-Server erstellt haben.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Experte für DataSnap-REST-Client-Module==&lt;br /&gt;
&lt;br /&gt;
DataSnap-REST-Client-Module ermöglichen von der IDE aus eine einfache Verbindung zu einem DataSnap-Server. Erstellen Sie zuerst eine neue VCL-Formularanwendung, und wählen Sie dann über das Menü &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu&#039;&#039;&#039;&amp;lt;/font&amp;gt; den Eintrag &#039;&#039;&#039;DataSnap-REST-Client-Modul&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Experte für DataSnap-REST-Client-Module ist dem Experten für DataSnap-Client-Module sehr ähnlich, enthält aber standardmäßig nur drei Schritte. Die folgenden Bildern zeigen die drei Schritte dieses Experten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt des Experten für DataSnap-REST-Client-Module ist fast identisch mit dem Experten für DataSnap-Client-Module. Sie wählen hier den Speicherort des Computers aus, auf dem der DataSnap-Server ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IIm zweiten Schritt des Experten müssen Sie Informationen zu dem Typ des DataSnap-Servers für die konfigurierte Verbindung angeben. Wie bei den anderen Schritten ist jede Option selbsterklärend: Klicken Sie darauf, und der Experte zeigt einen Hinweis zu der ausgewählten Option an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im dritten Schritt des Experten für DataSnap-REST-Client-Module müssen Sie den Kommunikations-Port, den DataSnap-Kontext, den Benutzernamen und das Passwort angeben, um zur das Client-Modul fertigzustellen. Der Experte bietet auch die Möglichkeit, die Verbindung mit der Schaltfläche &#039;&#039;&#039;Verbindung testen&#039;&#039;&#039; zu überprüfen. Damit wird gewährleistet, dass die Verbindung erfolgreich eingerichtet wurde.&lt;br /&gt;
&lt;br /&gt;
==Weitere Hinweise==&lt;br /&gt;
&lt;br /&gt;
Weder der Experte für DataSnap-Client-Module noch der Experte für DataSnap-REST-Client-Module kann aufgerufen werden, wenn nicht zuerst eine VCL-Formularanwendung erstellt wurde oder bereis in der IDE geöffnet ist. Wenn keine VCL-Formularanwendung in der IDE geladen ist, sind die beiden Einträge DataSnap-Client-Modul und DataSnap-REST-Client-Modul im Dialogfeld Objektgalerie ( &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere&#039;&#039;&#039;&amp;lt;/font&amp;gt;) deaktiviert, so dass Sie sie nicht auswählen können.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Anwendungen entwickeln|DataSnap-Anwendungen entwickeln]]&lt;br /&gt;
* [[Mehrschichtige Anwendungen erstellen - Index|Mehrschichtige Anwendungen erstellen - Index]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap_%C3%9Cberblick_und_Architektur&amp;diff=208308</id>
		<title>DataSnap Überblick und Architektur</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap_%C3%9Cberblick_und_Architektur&amp;diff=208308"/>
		<updated>2016-06-01T08:33:08Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
DataSnap (früher bekannt als MIDAS) ist eine {{Delphi}}-Technologie für die Entwicklung von mehrschichtigen Anwendungen, vor allem von mehrschichtigen Datenbankanwendungen. {{CBuilder}} wird auch vollständig unterstützt. DataSnap ist nicht von MIDAS abhängig. DataSnap ermöglicht das Entwickeln von Client-Serveranwendungen, die über das Internet, das lokale Netzwerk oder den lokalen Host kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Die wesentlichste Funktion von DataSnap ist die Möglichkeit, von Client-Anwendungen aus Methoden aufzurufen, die auf einem Server implementiert sind. DataSnap erzeugt automatisch das erforderliche Interface für den Client zur Kommunikation mit dem Server, der die Prototypen der Servermethoden enthält.&lt;br /&gt;
&lt;br /&gt;
[[Image:DataSnapCloud.png]]&lt;br /&gt;
&lt;br /&gt;
DataSnap ermöglicht es dem Client mithilfe einer abgesicherten Übertragung von JSON-Daten (JavaScript Object Notation) über TCP/IP oder HTTP, sicher mit dem Server zu kommunizieren. Die Sicherheit wird durch die Definition von Filtern an beiden Enden des Kommunikationskanals zur Verschlüsselung und Komprimierung weiter erhöht.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil der DataSnap-Technologie ist die Möglichkeit, alle Client-Anwendungen asynchron über auf dem Server vorgenommene Änderungen zu informieren, so dass Clients entsprechende Aktionen ausführen können. Das Callback erfordert nicht, dass Clients Servermethoden aufrufen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für das Erstellen einer DataSnap-Anwendung finden Sie auf den folgenden Seiten: {{f|datasnap|&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden]]}}&lt;br /&gt;
* [[Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden]]{{f|dbexpress|&lt;br /&gt;
* [[Tutorial: Eine InterBase-Datenbank in einer Delphi- oder C++-Anwendung verwenden|Tutorial: Eine InterBase-Datenbank in einer {{Delphi}}- oder C++-Anwendung verwenden]] (mit einem DataSnap-Server)}}&lt;br /&gt;
&lt;br /&gt;
==DataSnap-Architektur==&lt;br /&gt;
&lt;br /&gt;
Die DataSnap-Technologie ermöglicht die Entwicklung von Client-Serveranwendungen, wobei entweder der Client oder der Server oder beide {{Delphi}}- oder {{CBuilder}}-Anwendungen ausführen. Die Kommunikation zwischen dem Client und dem Server kann über den lokalen Host, über das lokale Netzwerk oder über das Internet erfolgen. Sie legen den Verbindungstyp während des Entwurfs durch Setzen der Eigenschaft &#039;&#039;&#039;CommunicationProtocol&#039;&#039;&#039; einer TSQLConnection-Komponente auf TCP/IP oder HTTP fest.&lt;br /&gt;
&lt;br /&gt;
Die Client-Serverkommunikation wird durch den Austausch von JSON-Daten (JavaScript Object Notation) erreicht. {{f|webbroker|Die Serverantwort kann im HTML-Format unter Verwendung der WebBroker-Technologie gesendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Wenn entweder auf dem Client oder dem Server eine Firewall ausgeführt wird, bietet DataSnap die Option, den Datentransfer durch einen Tunnel zu lenken, so dass die Firewall außer Kraft gesetzt wird, und die Kommunikation zwischen dem Client und dem Server stattfinden kann.&lt;br /&gt;
&lt;br /&gt;
DataSnap ermöglicht die Implementierung von Client und Server in derselben Anwendung. Dieser Ansatz ist auch als In-Process-Konnektivität bekannt.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Grundlagen der mehrschichtigen Datenbank-Anwendungen|Grundlagen der mehrschichtigen Datenbank-Anwendungen]]&lt;br /&gt;
* [[DataSnap-Konnektoren für mobile Geräte|DataSnap-Konnektoren für mobile Geräte]]{{f|datasnap|&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden]]}}&lt;br /&gt;
* [[Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden]]{{f|dbexpress|&lt;br /&gt;
* [[Tutorial: Eine InterBase-Datenbank in einer Delphi- oder C++-Anwendung verwenden|Tutorial: Eine InterBase-Datenbank in einer {{Delphi}}- oder C++-Anwendung verwenden]]}}{{f|webbroker|&lt;br /&gt;
* [[Tutorial: DataSnap-Anwendung mit einem ISAPI-DLL-Server|Tutorial: DataSnap-Anwendung mit einem ISAPI-DLL-Server]]}}{{f|vcl|&lt;br /&gt;
* [[Steuerelemente für DataSnap-Server|Steuerelemente für DataSnap-Server]]}}{{f|datasnap|&lt;br /&gt;
* [[Erstellen eines DataSnap-Servers|Erstellen eines DataSnap-Servers]]}}&lt;br /&gt;
* [[Filtern des DataSnap-Byte-Streams|Filtern des DataSnap-Byte-Streams]]{{f|datasnap|&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]}}{{f|webbroker|&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]}}&lt;br /&gt;
&lt;br /&gt;
{{f|radstudio|&lt;br /&gt;
&lt;br /&gt;
* [http://www.embarcadero.com/rad-in-action/delphi-labs Videos: {{Delphi}} Labs von Paweł Głowacki]&lt;br /&gt;
* [http://www.embarcadero-info.com/in_action/radstudio/db.html#xx Let the experts show you how...mit Bob Swart]&lt;br /&gt;
* [http://edn.embarcadero.com/article/41189 DataSnap XE: Multitier Database Application]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=5Cn0scEzYQ9nF REST and Thin Client Development with DataSnap]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=GzfVDuNpt3uzc Using JavaScript and {{Delphi}} REST Servers]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=7S1VFt1153jb3 DataSnap: Features and Integration with User Types]&lt;br /&gt;
* [http://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=Qxne3uhuP1k1T DataSnap Server Application Types]&lt;br /&gt;
* [http://edn.embarcadero.com/article/41176 DataSnap Simple Calculator Service Example]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-Client-Module&amp;diff=208306</id>
		<title>Experte für DataSnap-Client-Module</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-Client-Module&amp;diff=208306"/>
		<updated>2016-06-01T08:33:05Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei|Datei (Menü)}}&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;&amp;quot;&amp;gt;hcDDataSnapClientModule&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{Delphi}}-Projekte &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{CBuilderUI}} &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Der Experte für DataSnap-Client-Module ist nur verfügbar, nachdem Sie einen DataSnap-Server erstellt haben.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Experte für DataSnap-Client-Module==&lt;br /&gt;
&lt;br /&gt;
DataSnap-Client-Module ermöglichen von der IDE aus eine einfache Verbindung zu einem DataSnap-Server. Erstellen Sie zuerst eine neue VCL-Formularanwendung, und wählen Sie dann über das Menü &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu&#039;&#039;&#039;&amp;lt;/font&amp;gt; den Eintrag &#039;&#039;&#039;DataSnap-Client-Modul&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn für den [[DataSnap-Server-Experte|DataSnap-Server]], mit dem dieser Client eine Verbindung herstellt, Filter angewendet werden (nämlich &#039;&#039;&#039;Verschlüsselung&#039;&#039;&#039;, &#039;&#039;&#039;Komprimierung&#039;&#039;&#039; oder beides), werden diese für den Client automatisch angewendet und ausgeführt.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Experte für DataSnap-Client-Module besteht aus vier Schritten, die auf den folgenden Bildern dargestellt sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im ersten Schritt des Experten für DataSnap-Client-Module wählen Sie den Speicherort des DataSnap-Servers aus. Ein DataSnap-Server kann ein lokaler (auf &#039;&#039;&#039;localhost&#039;&#039;&#039; ausgeführt) oder ein Remote-Server (auf einen anderen Computer mit einer gültigen IP-Adresse ausgeführt) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt des Experten wählen Sie den Typ des DataSnap-Servers für die aktuelle Verbindung aus. Sie legen eine Option fest, indem Sie auf das zugehörige Optionsfeld klicken. Um nähere Informationen zu einer bestimmten Option zu erhalten, klicken Sie auf die Option. Der Experte zeigt daraufhin einen Hinweis an. Beachten Sie bitte, dass Sie auf das blaue Ausrufezeichen klicken müssen, falls kein Hinweis angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im dritten Schritt des Experten für DataSnap-Client-Module wählen Sie das Verbindungsprotokoll aus. Beachten Sie bitte, dass der Server das ausgewählte Verbindungsprotokoll unterstützen muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule4.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;br Im vierten Schritt des Experten geben Sie den Kommunikations-Port, den Benutzernamen und das Passwort an. Diese Seite enthält auch die Schaltfläche &#039;&#039;&#039;Verbindung testen&#039;&#039;&#039;, mit der Sie überprüfen können, ob die Verbindung korrekt konfiguriert ist.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Anwendungen entwickeln|DataSnap-Anwendungen entwickeln]]&lt;br /&gt;
* [[Mehrschichtige Anwendungen erstellen - Index|Mehrschichtige Anwendungen erstellen - Index]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Client-Anwendung&amp;diff=208304</id>
		<title>DataSnap-Client-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Client-Anwendung&amp;diff=208304"/>
		<updated>2016-06-01T08:33:01Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
&lt;br /&gt;
* [[Verbinden des Clients mit dem DataSnap-Server|Verbinden des Clients mit dem DataSnap-Server]]&lt;br /&gt;
* [[Filtern des DataSnap-Byte-Streams|Filtern des DataSnap-Byte-Streams]]&lt;br /&gt;
* [[HTTPS-Zertifikatsverifizierung|HTTPS-Zertifikatsverifizierung]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden#Client-Anwendung erstellen|Tutorial: DataSnap-Server/Client]]&lt;br /&gt;
* [[Steuerelemente für DataSnap-Clients|Steuerelemente für DataSnap-Clients]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Eigenschaften_der_Datenmenge&amp;diff=208302</id>
		<title>Eigenschaften der Datenmenge</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Eigenschaften_der_Datenmenge&amp;diff=208302"/>
		<updated>2016-06-01T08:33:00Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken (Dialogfelder)}}&lt;br /&gt;
Use this dialog to examine the tables, columns, and other properties of a dataset.&lt;br /&gt;
&lt;br /&gt;
Im linken Bereich des Dialogfeldes wird die Datenmenge mit ihren Tabellen angezeigt. Markieren Sie im linken Bereich ein Objekt, um dessen Eigenschaften in einem schreibgeschützten Gitter im rechten Bereich anzuzeigen.[[en:Dataset Properties|Eigenschaften von en:Dataset]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daten-Explorer-Unterst%C3%BCtzung_f%C3%BCr_DataSnap&amp;diff=208300</id>
		<title>Daten-Explorer-Unterstützung für DataSnap</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daten-Explorer-Unterst%C3%BCtzung_f%C3%BCr_DataSnap&amp;diff=208300"/>
		<updated>2016-06-01T08:32:58Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
Die Daten-Explorer-Unterstützung für DataSnap wurde eingeführt, um Stored Procedures und Funktionen, Sichten und Tabellen einer laufenden [[DataSnap-Server-Anwendung|DataSnap-Server-Anwendung]] zu überwachen.&lt;br /&gt;
&lt;br /&gt;
==Verwendung und Beispiele==&lt;br /&gt;
&lt;br /&gt;
Um den Daten-Explorer mit DataSnap zu verwenden, müssen Sie zuerst eine DataSnap-Serveranwendung auf Ihrem lokalen Computer ausführen. Wenn die Serveranwendung ausgeführt wird, wechseln Sie in der {{Delphi}}-Benutzeroberfläche zur Registerkarte &#039;&#039;&#039;Daten-Explorer&#039;&#039;&#039;. Diese Registerkarte sollte in etwa wie folgende Abbildung aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im &#039;&#039;&#039;Daten-Explorer&#039;&#039;&#039; werden unter dem Abschnitt &#039;&#039;&#039;DATASNAP&#039;&#039;&#039; die folgenden Kategorien angezeigt: Tabellen, Sichten, Prozeduren, Funktionen, Synonyme. Für dieses Beispiel sind die &#039;&#039;&#039;Stored Procedures&#039;&#039;&#039; von DataSnap interessant. Wenn Sie auf den Eintrag &#039;&#039;&#039;Prozeduren&#039;&#039;&#039; klicken, wird eine Baumstruktur mit allen in der DataSnap-Serveranwendung enthaltenen Stored Procedures angezeigt. Angenommen, für eine Serveranwendung wird eine Stored Procedure namens &#039;&#039;&#039;TMyClass.Sum&#039;&#039;&#039; untersucht, die folgendermaßen definiert ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  function TMyClassClient.Sum(A: Double; B: Double): Double;&lt;br /&gt;
  begin&lt;br /&gt;
    if FSumCommand = nil then&lt;br /&gt;
    begin&lt;br /&gt;
      FSumCommand := FDBXConnection.CreateCommand;&lt;br /&gt;
      FSumCommand.CommandType := TDBXCommandTypes.DSServerMethod;&lt;br /&gt;
      FSumCommand.Text := &#039;TMyClass.Sum&#039;;&lt;br /&gt;
      FSumCommand.Prepare;&lt;br /&gt;
    end;&lt;br /&gt;
    FSumCommand.Parameters[0].Value.SetDouble(A);&lt;br /&gt;
    FSumCommand.Parameters[1].Value.SetDouble(B);&lt;br /&gt;
    FSumCommand.ExecuteUpdate;&lt;br /&gt;
    Result := FSumCommand.Parameters[2].Value.GetDouble;&lt;br /&gt;
  end;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie aus der Deklaration von &#039;&#039;&#039;TMyClassClient.Sum&#039;&#039;&#039; ersehen können, akzeptiert die Methode zwei &amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;Double&amp;lt;/span&amp;gt;-Werte und gibt deren Summe zurück. Die folgende Abbildung zeigt die Liste der Stored Procedures für eine Serveranwendung, die die oben beschriebene Methode enthält:&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer2.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch Klicken auf eine Stored Procedure wird dieser Eintrag erweitert und zeigt die &#039;&#039;Eingabe&#039;&#039;- und &#039;&#039;Ausgabe&#039;&#039;-Parameter an, in diesem Fall &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;B&#039;&#039;&#039; und &#039;&#039;&#039;ReturnValue&#039;&#039;&#039;. Wenn Sie auf den Namen einer Stored Procedure doppelklicken, wird ein &#039;&#039;&#039;Parameter&#039;&#039;&#039;-Fenster eingeblendet, in dem Sie die Parameter dieser Stored Procedure überwachen können.&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer3.png]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Server-Anwendung|DataSnap-Server-Anwendung]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbanksicherheit&amp;diff=208298</id>
		<title>Datenbanksicherheit</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbanksicherheit&amp;diff=208298"/>
		<updated>2016-06-01T08:32:55Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken verwenden}}&lt;br /&gt;
&lt;br /&gt;
Datenbanken enthalten häufig sensible Informationen. Verschiedene Datenbanken unterstützen Sicherheitsschemas für den Schutz dieser Information. Einige Datenbanken, wie beispielsweise Paradox und dBASE, bieten nur Sicherheit auf Tabellen- oder Feldebene. Wenn Benutzer versuchen, auf geschützte Tabellen zuzugreifen, müssen sie ein Passwort dafür angeben. Nachdem die Benutzer authentifiziert wurden, sehen sie nur die Felder (Spalten), für die sie eine Berechtigung besitzen.&lt;br /&gt;
&lt;br /&gt;
Die meisten SQL-Server fordern ein Passwort und einen Benutzernamen an, bevor sie überhaupt eine Nutzung des Datenbankservers zulassen. Nachdem sich der Benutzer bei der Datenbank angemeldet hat, legen der Benutzername und das Passwort fest, welche Tabellen zur Verfügung gestellt werden. Weitere Informationen für die Übergabe von Passwörtern an SQL-Server finden Sie unter [[Server-Anmeldungen steuern|Server-Anmeldungen steuern]].&lt;br /&gt;
&lt;br /&gt;
Beim Entwurf von Datenbankanmeldungen müssen Sie berücksichtigen, welchen Authentifizierungstyp Ihr Datenbankserver verwendet. Häufig werden Anwendungen so entworfen, dass sie die explizite Datenbankanmeldung vor den Benutzern verbergen, die sich nur bei der eigentlichen Anwendung anmelden müssen. Wenn Sie Ihre Benutzer nicht zur Eingabe eines Passworts auffordern wollen, müssen Sie entweder eine Datenbank verwenden, für die kein Passwort erforderlich ist, oder Sie müssen dem Server das Passwort und den Benutzernamen programmgesteuert übergeben. Falls das Passwort vom Programm aus übergeben wird, muss darauf geachtet werden, dass keine Sicherheitslücke entsteht, weil das Passwort aus der Anwendung gelesen werden könnte.&lt;br /&gt;
&lt;br /&gt;
Falls Sie von Ihren Benutzern fordern, dass diese ein Passwort eingeben, müssen Sie festlegen, wann das Passwort benötigt wird. Wenn Sie eine lokale Datenbank verwenden, aber vorhaben, später einen größeren SQL-Server einzurichten, sollten Sie das Passwort abfragen, sobald sich der Benutzer an der SQL-Datenbank anmeldet, und nicht erst, wenn er einzelne Tabellen öffnet.&lt;br /&gt;
&lt;br /&gt;
Falls für Ihre Anwendung mehrere Passwörter erforderlich sind, weil Sie sich an mehreren geschützten Systemen oder Datenbanken anmelden müssen, können Sie ein Hauptpasswort bereitstellen, das wiederum verwendet wird, um auf eine Tabelle mit den Passwörtern für die geschützten Systeme zuzugreifen. Die Anwendung stellt die Passwörter dann programmgesteuert bereit, ohne dass der Benutzer mehrere Passwörter eingeben muss.&lt;br /&gt;
&lt;br /&gt;
In mehrschichtigen Anwendungen können Sie aber auch ein ganz anderes Sicherheitsmodell verwenden. Sie können Protokolle wie beispielsweise HTTPs oder COM+ einsetzen, um den Zugriff auf mittlere Schichten zu steuern und den mittleren Schichten die Details für die Anmeldung bei Datenbankservern überlassen.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Datenbanktypen|Datenbanktypen]]&lt;br /&gt;
* [[Transaktionen|Transaktionen]]&lt;br /&gt;
* [[Das Data Dictionary|Das Data Dictionary]]&lt;br /&gt;
*[[Referentielle Integrität, Stored Procedures und Trigger|Referentielle Integrität, Stored Procedures und Trigger]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbank-Editor&amp;diff=208296</id>
		<title>Datenbank-Editor</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbank-Editor&amp;diff=208296"/>
		<updated>2016-06-01T08:32:53Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken (Dialogfelder)}}&lt;br /&gt;
Vewrwenden Sie dieses Dialogfeld zum Einrichten der Verbindung zu einer Datenbank.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Name&lt;br /&gt;
|&lt;br /&gt;
Der Name der Datenbank. Über diesen Namen wird die Datenbankkomponente im Anwendungscode angesprochen.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Aliasname&lt;br /&gt;
|&lt;br /&gt;
Der BDE-Alias der Datenbank. Wählen Sie einen Alias aus der Dropdown-Liste. Die Liste enthält alle Aliase, die derzeit bei der BDE registriert sind. Wenn Sie keine Verbindung zu einer als BDE-Alias registrierten Datenbank herstellen möchten, weisen Sie statt dessen der Eigenschaft Treiber einen Wert zu. Wenn Sie der Eigenschaft Alias einen Wert zuweisen, wird die Eigenschaft Driver gelöscht, da der Treibertyp im BDE-Alias integriert ist.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Treibername&lt;br /&gt;
|&lt;br /&gt;
Der Datenbanktyp, den die Datenbankkomponente repräsentiert. Wählen Sie in der Dropdown-Liste einen der Treibertypen STANDARD, ORACLE, SYBASE oder INTERBASE. Wenn der Datenbankserver als Alias bei der BDE registriert ist, können Sie statt dessen die Option Alias verwenden. Wenn Sie einen &#039;&#039;&#039;Treiber&#039;&#039;&#039; wählen, wird die Eigenschaft Alias gelöscht, damit keine Konflikte mit dem im Alias integrierten Treiber auftreten.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Parameter überschreibt&lt;br /&gt;
|&lt;br /&gt;
Die Werte aller Anmeldeparameter, die beim Herstellen der Verbindung benötigt werden. Die einzelnen Parameter hängen vom Typ der Datenbank ab. Eine Liste aller Parameter und ihrer Standardwerte erhalten Sie mit der Schaltfläche &#039;&#039;&#039;Vorgabe&#039;&#039;&#039;. In der Liste können Sie die Standardwerte ändern.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Vorgaben&lt;br /&gt;
|&lt;br /&gt;
Setzt die Parameter auf die Standardwerte für den Treibertyp.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Löschen&lt;br /&gt;
|&lt;br /&gt;
Entfernt alle überschriebenen Parameter.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Anmeldeaufforderung&lt;br /&gt;
|&lt;br /&gt;
Bewirkt, dass ein Anmeldedialogfeld automatisch eingeblendet wird, wenn der Benutzer eine Verbindung zu der Datenbank herstellt. Deaktivieren Sie die Option, wenn Sie den automatischen Anmeldedialog unterdrücken möchten. Die meisten Datenbankserver (mit Ausnahme der dateibasierten STANDARD-Typen) verlangen vom Benutzer bei der Anmeldung ein Kennwort. Wenn Sie bei diesen Servern auf den automatischen Anmeldedialog verzichten, muss die Anwendung den Benutzernamen und das Kennwort auf andere Weise bereitstellen. Dazu eignen sich beispielsweise hart codierte Parameter oder eine Ereignisbehandlungsroutine für OnLogin, in der den entsprechenden Parametern Werte zugewiesen werden.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Inaktive Verbindung halten&lt;br /&gt;
|&lt;br /&gt;
Legt fest, dass die Anwendung auch dann mit der Datenbank verbunden bleibt, wenn keine Datenmengen geöffnet sind. Bei Verbindungen zu externen Datenbankservern oder bei Anwendungen, die häufig Datenmengen öffnen und schließen, sollten Sie das Kontrollkästchen aktivieren. Sie verringern dadurch den Netzwerkverkehr, beschleunigen die Anwendung und umgehen die ständige Neuanmeldung beim Wiederherstellen der Verbindung. Wenn Sie das Kontrollkästchen deaktivieren, wird die Verbindung beendet, sobald die letzte Datenmenge geschlossen wird. Dieses Vorgehen spart Systemressourcen, hat jedoch den Nachteil, dass die Verbindung neu eingerichtet und initialisiert werden muss, wenn wieder eine Datenmenge geöffnet wird.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankarchitektur&amp;diff=208294</id>
		<title>Datenbankarchitektur</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankarchitektur&amp;diff=208294"/>
		<updated>2016-06-01T08:32:52Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbankanwendungen entwerfen - Index}}&lt;br /&gt;
&lt;br /&gt;
Datenbankanwendungen setzen sich aus Elementen der Benutzeroberfläche, Komponenten zur Anzeige von Datenbankinformationen (Datenmengen) und Komponenten, die diese miteinander und mit der Quelle der Datenbankinformation verbinden, zusammen. Die Anordnung dieser Bausteine bildet die Architektur einer Datenbankanwendung.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwar verschiedene Methoden, die Komponenten in einer Datenbankanwendung anzuordnen, aber die meisten folgen dem in der nachfolgenden Abbildung gezeigten allgemeinen Schema:&lt;br /&gt;
&lt;br /&gt;
[[Image:DBDARCH1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Das Formular für die Benutzeroberfläche==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie Ihre Benutzeroberfläche in einem eigenen Formular isoliert haben, können Sie ein [[Standard-Datenmodule erstellen und bearbeiten|Datenmodul]] verwenden, das die Komponenten aufnimmt, die Datenbankinformationen (Datenmengen) anzeigen, ebenso wie die Komponenten, die diese Datenmengen mit anderen Bereichen Ihrer Anwendung verbinden. Wie die Formulare für die Benutzeroberfläche können Sie Datenmodule in der Objektablage freigeben, sodass sie wiederverwendet oder von Anwendungen gemeinsam genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
==Das Datenmodul==&lt;br /&gt;
&lt;br /&gt;
Das erste Element in dem Datenmodul ist eine [[Datensensitive Steuerelemente einer Datenmenge zuordnen|Datenquelle]]. Die Datenquelle agiert als Leitung zwischen der Benutzeroberfläche und einer Datenmenge, die Informationen aus einer Datenquelle repräsentiert. Mehrere datensensitive Steuerelemente auf einem Formular können eine einzelne Datenquelle gemeinsam nutzen. In diesem Fall wird die Anzeige in jedem Steuerelement synchronisiert, sodass, wenn der Benutzer die Datensätze durchsieht, der entsprechende Wert aus den Feldern für den aktuellen Datensatz in jedem Steuerelement angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
==Die Datenquelle==&lt;br /&gt;
&lt;br /&gt;
Die Seele Ihrer Datenbankanwendung ist die Datenmenge. Diese Komponente repräsentiert eine Gruppe von Datensätzen aus der zugrunde liegenden Datenbank. Bei diesen Datensätzen kann es sich um die Daten aus einer einzelnen Datenbanktabelle handeln, um eine Untermenge der Felder oder Datensätze in einer Tabelle oder um Informationen aus einer Verknüpfung von mehreren Tabellen in einer einzelnen Ansicht. Durch die Verwendung von Datenmengen wird Ihre Anwendungslogik vor Neustrukturierungen der physischen Tabellen in Ihren Datenbanken geschützt. Wenn sich die zugrunde liegende Datenbank ändert, müssen Sie vielleicht die Methode ändern, wie die Datenmengenkomponente die enthaltenen Daten abruft, aber Ihre restliche Anwendung kann unverändert weiterarbeiten. Weitere Informationen über allgemeine Eigenschaften und Methoden von Datenmengen finden Sie unter [[Datenmengen: Übersicht|Datenmengen]].&lt;br /&gt;
&lt;br /&gt;
==Die Datenmenge==&lt;br /&gt;
&lt;br /&gt;
Unterschiedliche Datenmengentypen verwenden unterschiedliche Mechanismen, um eine Verbindung zu den zugrunde liegenden Datenbankinformationen einzurichten. Diese unterschiedlichen Mechanismen wiederum bedingen die Verwendung unterschiedlicher Architekturen für die von Ihnen entwickelten Datenbankanwendungen. Es gibt vier grundlegende Mechanismen, um Verbindungen zu den Daten einzurichten:&lt;br /&gt;
&lt;br /&gt;
==Die Datenverbindung==&lt;br /&gt;
&lt;br /&gt;
Unterschiedliche Datenmengentypen verwenden unterschiedliche Mechanismen, um eine Verbindung zu den zugrunde liegenden Datenbankinformationen einzurichten. Diese unterschiedlichen Mechanismen wiederum bedingen die Verwendung unterschiedlicher Architekturen für die von Ihnen entwickelten Datenbankanwendungen. Es gibt vier grundlegende Mechanismen, um Verbindungen zu den Daten einzurichten:&lt;br /&gt;
&lt;br /&gt;
* [[Eine direkte Verbindung zu einem Datenbankserver einrichten|Direkte Verbindung zu einem Datenbankserver]]. Die meisten Datenmengen verwenden eine Ableitung von &#039;&#039;TCustomConnection&#039;&#039;, um die Verbindung zu einem Datenbankserver darzustellen.&lt;br /&gt;
* [[Eine dedizierte Datei auf der Festplatte verwenden|Verwendung einer dedizierten Datei auf der Festplatte]]. Client-Datenbanken unterstützen die Möglichkeit, mit einer dedizierten Datei auf der Festplatte zu arbeiten. Bei der Arbeit mit einer dedizierten Datei ist keine separate Verbindungskomponente erforderlich, weil die Client-Datenmenge selbst weiß, wie sie aus der Datei liest und in diese schreibt.&lt;br /&gt;
* [[Verbindungen zu anderen Datenmengen einrichten|Verbindungen zu anderen Datenmengen einrichten]]. Client-Datenmengen können mit Daten arbeiten, die von einer anderen Datenmenge bereitgestellt werden. Eine &#039;&#039;TDataSetProvider&#039;&#039;-Komponente dient als Mittler zwischen der Client-Datenmenge und ihrer Quelldatenmenge. Dieser Datenmengen-Provider kann sich im selben Datenmodul wie die Client- Datenmenge befinden, kann aber auch Teil eines Anwendungsservers sein, der auf einer anderen Maschine ausgeführt wird. Falls der Provider Teil eines Anwendungsservers ist, brauchen Sie auch eine spezielle Ableitung von &#039;&#039;TCustomConnection&#039;&#039;, um die Verbindung zum Anwendungsserver darzustellen.&lt;br /&gt;
* Daten aus einem RDS DataSpace-Objekt abrufen. ADO-Datenmengen können eine [[lib_de:Data.Win.ADODB.TRDSConnection|ADOdb.TRDSConnection]]-Komponente verwenden, um Daten in mehrschichtigen Datenbankanwendungen zu verpacken, die mithilfe von ADO-basierten Anwendungsservern erstellt wurden.&lt;br /&gt;
&lt;br /&gt;
Manchmal können alle diese Mechanismen [[Ansätze kombinieren|innerhalb einer einzigen Anwendung kombiniert]] werden.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Die Benutzeroberfläche gestalten|Die Benutzeroberfläche gestalten]]&lt;br /&gt;
* [[Die Borland Database Engine|Die Borland Database Engine]]&lt;br /&gt;
* [[Datenbanken verwenden|Datenbanken verwenden]]&lt;br /&gt;
*[[Datenbanktypen|Datenbanktypen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenhaltepunkt_ist_an_einer_Stack-Position_gesetzt&amp;diff=208292</id>
		<title>Datenhaltepunkt ist an einer Stack-Position gesetzt</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenhaltepunkt_ist_an_einer_Stack-Position_gesetzt&amp;diff=208292"/>
		<updated>2016-06-01T08:32:49Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Fehlermeldungen - Index}}&lt;br /&gt;
Der Stack-Speicher ist unbeständig und ändert sich oft. Wenn ein Datenhaltepunkt an einer Adresse im Stack gesetzt wird, wird der Haltepunkt möglicherweise sehr oft getroffen, nämlich jedes Mal, wenn etwas in den Stack gelegt oder daraus entfernt wird.&lt;br /&gt;
&lt;br /&gt;
Sie können diesen Haltepunkt weiterhin setzen. Sie sollten sich aber darüber im Klaren sein, dass er so oft angelaufen werden könnte, dass die Anwendung nicht korrekt ausgeführt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Überblick zum Debuggen|Überblick zum Debuggen]]&lt;br /&gt;
* [[Haltepunkte setzen und bearbeiten|Haltepunkte setzen und bearbeiten]][[en:Data Breakpoint is set on a stack location|en:Data Breakpoint is set on a stack location]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Position_von_DLL-Dateien&amp;diff=208329</id>
		<title>Position von DLL-Dateien</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Position_von_DLL-Dateien&amp;diff=208329"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Installationsprogramme verwenden}}&lt;br /&gt;
&lt;br /&gt;
DLL-Dateien, die nur von einer einzigen Anwendung verwendet werden, können in demselben Verzeichnis wie die Anwendung installiert werden. Wird eine DLL jedoch von mehreren Anwendungen genutzt, muss sie sich an einer Position befinden, auf die alle Anwendungen zugreifen können. Häufig werden derartige DLLs entweder im Verzeichnis WINDOWS oder in WINDOWS\SYSTEM bereitgestellt. Besser ist es aber, wenn ein separates Verzeichnis für gemeinsam genutzte DLLs angelegt wird, ähnlich wie dies bei der Installation der BDE (Borland Database Engine) geschieht.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Installationsprogramme verwenden|Installationsprogramme verwenden]]&lt;br /&gt;
* [[Anwendungsdateien identifizieren|Anwendungsdateien identifizieren]]&lt;br /&gt;
*[[Hilfsanwendungen|Hilfsanwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DESIGNONLY-Direktive_(Delphi)&amp;diff=208327</id>
		<title>DESIGNONLY-Direktive (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DESIGNONLY-Direktive_(Delphi)&amp;diff=208327"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der Delphi-Compiler-Direktiven - Index}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Option&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DESIGNONLY ON} oder {$DESIGNONLY OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Vorgabe&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DESIGNONLY OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bereich&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Lokal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Direktive &#039;&#039;&#039;{DESIGNONLY ON}&#039;&#039;&#039; bewirkt, dass das entsprechende Package für die Installation in der Entwicklungsumgebung compiliert wird.&lt;br /&gt;
&lt;br /&gt;
Verwenden Sie die Direktive &#039;&#039;&#039;DESIGNONLY&#039;&#039;&#039; nur in [[Delphi Package Source File|Package-Quelldateien]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
*[[Spezielle Compiler-Direktiven für Packages|Spezielle Compiler-Direktiven für Packages]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Treiber_und_Framework-Unterst%C3%BCtzung_f%C3%BCr_SQL_Anywhere_11&amp;diff=208325</id>
		<title>DbExpress-Treiber und Framework-Unterstützung für SQL Anywhere 11</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Treiber_und_Framework-Unterst%C3%BCtzung_f%C3%BCr_SQL_Anywhere_11&amp;diff=208325"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
{{DISPLAYTITLE:dbExpress-Treiber und Framework-Unterstützung für SQL Anywhere 11}}&lt;br /&gt;
{{Product}} XE unterstützt SQL Anywhere 11 von Sybase iAnywhere. Leistungsmerkmale:&lt;br /&gt;
&lt;br /&gt;
* Zu den neuen von SQL Anywhere 11 unterstützten Datentypen zählen &#039;&#039;&#039;NCHAR&#039;&#039;&#039;, &#039;&#039;&#039;NVARCHAR&#039;&#039;&#039; und &#039;&#039;&#039;LONG NVARCHAR&#039;&#039;&#039;.&lt;br /&gt;
* Neue Verbindungseigenschaften und -attribute, wie &#039;&#039;&#039;UNICODE-Metadaten&#039;&#039;&#039;, &#039;&#039;&#039;include TABLE&#039;&#039;&#039;, &#039;&#039;&#039;FIELD&#039;&#039;&#039; und &#039;&#039;&#039;INDEX-Name&#039;&#039;&#039;.&lt;br /&gt;
* Unterstützung von &#039;&#039;&#039;NLS / UNICODE&#039;&#039;&#039; für Adaptive Server Anywhere (ASA) 11.&lt;br /&gt;
&lt;br /&gt;
==Vom neuen ASA-11-Treiber unterstützte Datentypen==&lt;br /&gt;
&lt;br /&gt;
{{Product}} XE führt neues Verhalten für alte Datentypen und die Unterstützung für neue Datentypen ein. Die folgende Tabelle enthält die Datentypen und deren gekapselte ASA-11-Feldtypen, die von der Version 11 des iAnywhere-Treibers unterstützt werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Datentyp&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Gekapselter Feldtyp&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Nennung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_NULL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANULL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_UNKNOWN_TYPE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAUNKNOWN&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_CHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASACHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAUNIQUEIDENTIFIERSTR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 1&amp;lt;br /&amp;gt;&lt;br /&gt;
// maximale Größe = 36&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_NUMERIC&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANUMERIC&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAMONEY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASASMALLMONEY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 2&amp;lt;br /&amp;gt;&lt;br /&gt;
// 2&amp;lt;br /&amp;gt;&lt;br /&gt;
// 2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DECIMAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADECIMAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_INTEGER&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAINTEGER&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 4&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_SMALLINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASASMALLINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_FLOAT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAFLOAT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 6&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_REAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAREAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DOUBLE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADOUBLE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 8&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 91&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 93&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_VARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DATETIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADATETIME&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASASMALLDATETIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 9&amp;lt;br /&amp;gt;&lt;br /&gt;
// DOMAIN&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 92&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_DATE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_INTERVAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAINTERVAL&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 10 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_TIME&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TYPE_TIMESTAMP&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Keine&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_DEFAULT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASADEFAULT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// 99 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ARD_TYPE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAARD&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -99 für ODBCVER &amp;amp;gt;= 0x0300&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BIT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABIT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASALONGVARBIT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAVARBIT&amp;lt;br /&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_TINYINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASATINYINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -6&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BIGINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABIGINT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_LONGVARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGVARBINARY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASALONGBINARY&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAIMAGE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -4&amp;lt;br /&amp;gt;&lt;br /&gt;
// maximale Größe = 2 GB&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_VARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAVARBINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -3&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_BINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASABINARY&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -2&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_LONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASATEXT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAXML&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -1&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// -8&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASANVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// -9&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_WLONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASALONGNVARCHAR&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASANTEXT&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAWLONGVARCHAR&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// UTF-8&amp;lt;br /&amp;gt;&lt;br /&gt;
// Unicode&amp;lt;br /&amp;gt;&lt;br /&gt;
// -10&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_GUID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
fldASAUNIQUEIDENTIFIER&amp;lt;br /&amp;gt;&lt;br /&gt;
fldASAGUID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
// -11 (UUID), maximale Größe = 36&amp;lt;br /&amp;gt;&lt;br /&gt;
// -11 für ODBCVER &amp;amp;gt;= 0x0350&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Verbindungsattribute==&lt;br /&gt;
&lt;br /&gt;
Ein weiteres neues Leistungsmerkmal für die Unterstützung von SQL Anywhere 11 stellen neue Verbindungsattribute dar. Die in diesem Release enthaltenen Verbindungsattribute sind in der folgenden Tabelle aufgeführt:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Verbindungsattribut&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;ODBC-Version&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_ACCESS_MODE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_AUTOCOMMIT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_CONNECTION_DEAD&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 3.5&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_LOGIN_TIMEOUT&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_METADATA_ID&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRACE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRACEFILE&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRANSLATE_LIB&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TRANSLATE_OPTION&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
SQL_ATTR_TXN_ISOLATION&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ODBC 1.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Zukünftige Implementierungen==&lt;br /&gt;
&lt;br /&gt;
Bei Kundenanforderungen könnten die folgenden Attribute zukünftig implementiert werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Verbindungsattribut&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
allow_read_client_file&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
allow_write_client_file&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
AuthType&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
CacheReadWorkTable&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ClientNodeAddress&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskReadWorkTable&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskSyncRead&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskSyncWrite&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWaitRead&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWaitWrite&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWriteHint&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
DiskWriteHintPages&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
LockIndexID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
LockRowID&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
max_priority&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
OSUser&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
priority&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
query_mem_timeout&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemActiveCurr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemExtraAvail&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantFailed&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantGranted&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantWaiting&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemGrantRequested&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
QueryMemWaited&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ServerNodeAddress&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ReadHint&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
ReadHintScatter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
* [[DbExpress Framework-Kompatibilität|dbExpress Framework-Kompatibilität]]&lt;br /&gt;
* [[DbExpress-Datenbankanwendungen weitergeben|dbExpress-Datenbankanwendungen weitergeben]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Mit Delphi für Windows arbeiten]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankspezifische_Informationen_zu_DbExpress&amp;diff=208323</id>
		<title>Datenbankspezifische Informationen zu DbExpress</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankspezifische_Informationen_zu_DbExpress&amp;diff=208323"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Datenbankspezifische Informationen zu DbExpress}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
&lt;br /&gt;
dbExpress ist ein Datenbank-Framework, das Verbindungen zu einer Vielzahl unterstützter Datenbanken ermöglicht. Die Datenbanken können sich in vielerlei Hinsicht (z.B. bezüglich der Datentypen) unterscheiden. Dieses Thema enthält grundlegende Informationen zur Arbeit mit verschiedenen Datenbanken.&lt;br /&gt;
&lt;br /&gt;
=InterBase=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
Es wird sowohl InterBase 2009 als auch InterBase 2007 unterstützt. Dies umfasst die Unterstützung von Treiber, TField-Objekten und des Daten-Explorers.&lt;br /&gt;
&lt;br /&gt;
==To-Go==&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt auch die InterBase To-Go Edition, eine kleine, portable Version der Desktop Edition. Zu den Zielanwendungen der To-Go Edition gehören neben Software für Kleingeräte und Public Kiosks auch VAR-Anwendungen (Value Added Reseller), die mit InterBase erstellt wurden. Für die To-Go Edition muss InterBase nicht eigens auf dem Server oder dem Endbenutzer-Arbeitsplatz installiert werden.&lt;br /&gt;
&lt;br /&gt;
==dbxdrivers.ini-Einstellung==&lt;br /&gt;
&lt;br /&gt;
Im [Interbase]-Abschnitt muss die Eigenschaft VendorLib zugewiesen werden.&lt;br /&gt;
&lt;br /&gt;
InterBase:&lt;br /&gt;
&lt;br /&gt;
  VendorLib=GDS32.DLL&lt;br /&gt;
&lt;br /&gt;
To-Go:&lt;br /&gt;
&lt;br /&gt;
  VendorLib=IBTOGO.DLL&lt;br /&gt;
&lt;br /&gt;
=MS SQL=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
MS SQL Server 2008 wird vollständig unterstützt. Es muss der native MS SQL Server 2008-Client installiert werden (nicht MS SQL Server 2005). Dieser Client verwendet die Datei sqlncli10.dll anstelle von oledb.dll. Sie können den Client unter der Adresse [http://msdn.microsoft.com/en-us/sqlserver/ff658533.aspx [1]] herunterladen (Abschnitt &amp;quot;Microsoft SQL Server 2008 Native Client&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==MSSQL-Treiber benötigt für Konsolenanwendungen und Worker Threads Aufrufe von CoInitialize und CoUninitialize==&lt;br /&gt;
&lt;br /&gt;
Der MSSQL-Treiber ruft &#039;&#039;&#039;CoInitialize&#039;&#039;&#039; und &#039;&#039;&#039;CoUninitialize&#039;&#039;&#039; nicht auf. Frühere Versionen des MSSQL-Treibers (ein COM-Treiber) haben CoInitialize und CoUninitialize direkt aufgerufen. Dieses Verfahren hat aber viele Nachteile. Bei VCL-Anwendungen erfolgt der Aufruf von CoInitialize und CoUninitialize automatisch.&lt;br /&gt;
&lt;br /&gt;
Bei Anwendungen, die den MSSQL-Treiber in Konsolenanwendungen oder in Worker Threads verwenden, müssen Sie jedoch selbst für den Aufruf von CoInitialize/CoUninitialize sorgen. Wird dieser Aufruf nicht ausgeführt, wird die folgende Fehlermeldung angezeigt: &amp;quot;DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Cannot load libraryName library (error code nnn).&lt;br /&gt;
  The libraryName library may be missing from the system path&lt;br /&gt;
  or you may have an incompatible version of the library installed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hilfe zu CoInitialize finden Sie unter [http://msdn.microsoft.com/de-de/library/ms678543%28v=VS.85%29.aspx CoInitialize Function (MSDN)].&lt;br /&gt;
&lt;br /&gt;
=MYSQL=&lt;br /&gt;
&lt;br /&gt;
==Unterstützung==&lt;br /&gt;
&lt;br /&gt;
MYSQL Client 5.1 wird unterstützt und ist erforderlich. Wenn Sie versuchen, eine Verbindung zu einer früheren Version des Clients herzustellen, schlägt der Verbindungsaufbau fehl, und es wird folgende Fehlermeldung angezeigt:&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Cannot load libraryName library (error code nnn). &lt;br /&gt;
  The libraryName library may be missing from the system path &lt;br /&gt;
  or you may have an incompatible version of the library installed.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DbExpress-Framework|dbExpress-Framework]]&lt;br /&gt;
* [[DbExpress-Datentypzuordnung für unterstützte Datenbanken|dbExpress-Datentypzuordnung für unterstützte Datenbanken]]&lt;br /&gt;
*[[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Datentypzuordnung_f%C3%BCr_unterst%C3%BCtzte_Datenbanken&amp;diff=208321</id>
		<title>DbExpress-Datentypzuordnung für unterstützte Datenbanken</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Datentypzuordnung_f%C3%BCr_unterst%C3%BCtzte_Datenbanken&amp;diff=208321"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:dbExpress-Datentypzuordnung für unterstützte Datenbanken}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
&lt;br /&gt;
Datentypen der unterstützten Datenbanken sind dbExpress-Datentypen zugeordnet. Bei Bedarf sorgt dbExpress für:&lt;br /&gt;
&lt;br /&gt;
* Eine konsistente Datentypzuordnung zwischen den Datenbanken.&lt;br /&gt;
* Eine Zuordnung logischer Datentypen zu dbExpress-Typen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Verwendung von Datentypen=&lt;br /&gt;
&lt;br /&gt;
dbExpress enthält ein breites Spektrum logischer Datentypen. dbExpress unterstützt die Zuordnung logischer Datentypen für Adaptive Server Anywhere, DB2, Informix, InterBase, MS SQL, MSDE, MYSQL, Oracle und Sybase.&lt;br /&gt;
&lt;br /&gt;
Die Zuordnungstabellen geben an, welche Datentypen an Datenbanken gesendet und von diesen abgerufen werden können (Ausnahmen siehe Anmerkungen). Diese Zuordnungen funktionieren korrekt, aber es können durchaus auch andere Zuordnungen möglich sein. Eine Datenbank könnte diese Typen beim Abfragen einer Tabelle per Vorgabe einem anderen Typ zuordnen. Der Typ Geometry gibt beispielsweise per Vorgabe ein Feld des Typs TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
&lt;br /&gt;
Für die folgende Abfrage:&lt;br /&gt;
&lt;br /&gt;
  Select * from table&lt;br /&gt;
&lt;br /&gt;
erhalten Sie im Allgemeinen Daten des Typs zurück, der in den Zuordnungstabellen angegeben ist.&lt;br /&gt;
&lt;br /&gt;
In manchen Fällen ist es wünschenswert, den Rückgabetyp festzulegen. Zum Beispiel bei einer Tabelle mit der Spalte geometryCol (Typ: Geometry) könnten Sie&lt;br /&gt;
&lt;br /&gt;
  Select geometryCol.ToString() from table&lt;br /&gt;
&lt;br /&gt;
angeben, um die Daten als String abzurufen und um zu verhindern, dass der zugeordnete Datentyp für diese Daten verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Die Daten, die Sie an eine Datenbank senden, lassen sich mithilfe von Parametern ebenfalls spezifizieren. Für eine Tabelle mit der Spalte intCol des Typs int und der Spalte geometryCol des Typs Geometry könnten Sie beispielsweise die folgende Anweisung verwenden:&lt;br /&gt;
&lt;br /&gt;
  insert into table (intCol, geometryCol) values (?, ?)&lt;br /&gt;
&lt;br /&gt;
und dann die Parameterwerte, wie z.B. 3, &#039;Point(1 1)&#039;, übergeben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=InterBase=&lt;br /&gt;
&lt;br /&gt;
dbExpress stellt Datentypzuordnungen für InterBase 2009, einschließlich To-Go, bereit In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und InterBase 2009.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |InterBase-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| integer&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| blob-Untertyp text&lt;br /&gt;
| TDBXDataTypes.BlobType mit dem Untertyp TDBXSubDataTypes.MemoSubType oder TDBXSubDataTypes.WideMemoSubType für eine UTF-8-Datenbank&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double precision&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| boolean&lt;br /&gt;
| TDBXDataTypes.BooleanType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=MS SQL und MSDE=&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass dbExpress alle MS SQL 2008-Datentypen unterstützt. In der folgenden Tabelle finden Sie die Datentypzuordnungen für MS SQL und MSDE.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |MS SQL-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| int&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| tinyint&lt;br /&gt;
| TDBXDataTypes.UInt8Type&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| text&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.MemoSubType&lt;br /&gt;
|-&lt;br /&gt;
| nchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| nvarchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| ntext&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.WideMemoSubType&lt;br /&gt;
|-&lt;br /&gt;
| geometry&lt;br /&gt;
| TDBXDataTypes.AnsiStringType. Benutzen Sie diesen Typ, wenn Sie Parameter verwenden. Die Datenbank gibt TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| geography&lt;br /&gt;
| TDBXDataTypes.AnsiStringType. Benutzen Sie diesen Typ, wenn Sie Parameter verwenden. Die Datenbank gibt TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| money&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| smallmoney&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| real&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| xml&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| sysname&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| datetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetime2&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| smalldatetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetimeoffset&lt;br /&gt;
| TDBXDataTypes.TimeStampOffsetType&lt;br /&gt;
|-&lt;br /&gt;
| binary&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| varbinary&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|-&lt;br /&gt;
| image&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| bit&lt;br /&gt;
| TDBXDataTypes.BooleanType&lt;br /&gt;
|-&lt;br /&gt;
| hierarchyid&lt;br /&gt;
| TDBXDataTypes.WideStringType. Verwenden Sie den Parameter TDBXDataTypes.WideStringType, die Datenbank gibt aber TDBXDataTypes.VarBytesType zurück.&lt;br /&gt;
|-&lt;br /&gt;
| uniqueidentifier&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| sql_variant&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=MYSQL=&lt;br /&gt;
&lt;br /&gt;
dbExpress stellt die folgenden MYSQL-Datentypzuordnungen bereit:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |MYSQL-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| int&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| tinyint&lt;br /&gt;
| TDBXDataTypes.Int8Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| mediumint&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| datetime&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| year&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| binary&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varbinary&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| tinytext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| text&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| mediumtext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| longtext&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| tinyblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| mediumblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| longblob&lt;br /&gt;
| TDBXDataTypes.BlobType, Untertyp TDBXSubDataTypes.BinarySubType&lt;br /&gt;
|-&lt;br /&gt;
| bit&lt;br /&gt;
| TDBXDataTypes.VarBytesType&lt;br /&gt;
|-&lt;br /&gt;
| bool&lt;br /&gt;
| TDBXDataTypes.Int8Type&lt;br /&gt;
|-&lt;br /&gt;
| enum&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| set&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firebird=&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt nun auch alle Firebird-Datentypen. In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und Firebird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |Firebird-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| integer&lt;br /&gt;
| TDBXDataTypes.Int32Type&lt;br /&gt;
|-&lt;br /&gt;
| bigint&lt;br /&gt;
| TDBXDataTypes.Int64Type&lt;br /&gt;
|-&lt;br /&gt;
| smallint&lt;br /&gt;
| TDBXDataTypes.Int16Type&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| varchar&lt;br /&gt;
| TDBXDataTypes.WideStringType, wenn der Server UTF-8 verwendet; ansonsten TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| decimal&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| numeric&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.DateType&lt;br /&gt;
|-&lt;br /&gt;
| time&lt;br /&gt;
| TDBXDataTypes.TimeType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Oracle=&lt;br /&gt;
&lt;br /&gt;
dbExpress unterstützt jetzt alle Oracle 11g-Datentypen, einschließlich der neuen Typen XMLType, Binary_Float und Binary_Double. &lt;br /&gt;
In der folgenden Tabelle finden Sie die Datentypzuordnungen zwischen dbExpress und Oracle 11g.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |Oracle-Typ&lt;br /&gt;
! style=&amp;quot;text-align: left;&amp;quot; |dbExpress-Typ&lt;br /&gt;
|-&lt;br /&gt;
| bfile&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| blob&lt;br /&gt;
| TDBXDataTypes.BlobType&lt;br /&gt;
|-&lt;br /&gt;
| char&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| clob&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| date&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| float&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| binary_float&lt;br /&gt;
| TDBXDataTypes.SingleType&lt;br /&gt;
|-&lt;br /&gt;
| binary_double&lt;br /&gt;
| TDBXDataTypes.DoubleType&lt;br /&gt;
|-&lt;br /&gt;
| interval day to second&lt;br /&gt;
| TDBXDataTypes.IntervalType&lt;br /&gt;
|-&lt;br /&gt;
| interval year to month&lt;br /&gt;
| TDBXDataTypes.IntervalType&lt;br /&gt;
|-&lt;br /&gt;
| long&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| long raw&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| nchar&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| nclob&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| number&lt;br /&gt;
| TDBXDataTypes.BcdType&lt;br /&gt;
|-&lt;br /&gt;
| nvarchar2&lt;br /&gt;
| TDBXDataTypes.WideStringType&lt;br /&gt;
|-&lt;br /&gt;
| raw&lt;br /&gt;
| TDBXDataTypes.BytesType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp with local time zone&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| timestamp with time zone&lt;br /&gt;
| TDBXDataTypes.TimeStampType&lt;br /&gt;
|-&lt;br /&gt;
| varchar2&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|-&lt;br /&gt;
| xmltype&lt;br /&gt;
| TDBXDataTypes.AnsiStringType&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Von dbExpress unterstützte Datenbankmanagementsysteme|Von dbExpress unterstützte Datenbankmanagementsysteme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Komponenten&amp;diff=208319</id>
		<title>DbExpress-Komponenten</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DbExpress-Komponenten&amp;diff=208319"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:dbExpress-Komponenten}}&lt;br /&gt;
{{Parent|Datenbankanwendungen für die Win32-Plattform entwickeln - Index}}&lt;br /&gt;
dbExpress setzt sich aus mehreren &amp;quot;schlanken&amp;quot; Datenbankkomponenten zusammen, die schnellen Zugriff auf SQL-Datenbankserver bieten. dbExpress stellt für jede unterstützte Datenbank ein Treiber-Framework zur Verfügung, das die serverspezifische Software an einheitliche dbExpress-Interfaces anpasst. Wenn Sie eine Datenbankanwendung weitergeben, die dbExpress verwendet, nehmen Sie eine DLL (den serverspezifischen Treiber) in die von Ihnen erstellten Anwendungsdateien auf.&lt;br /&gt;
&lt;br /&gt;
dbExpress ermöglicht Ihnen den schnellen Zugriff auf Datenbanken unter Verwendung unidirektionaler Datenmengen. Unidirektionale Datenmengen sind auf schnellen, unaufwendigen Zugriff auf Datenbankinformationen ausgelegt, wobei nur ein minimaler Zusatzaufwand entsteht. Wie andere Datenmengen können sie einen SQL-Befehl an den Datenbankserver senden und, falls der Befehl mehrere Datensätze zurückgibt, diese Datensätze entgegennehmen. Unidirektionale Datenmengen nehmen keine Zwischenspeicherung der Daten vor, wodurch sie schneller und weniger ressourcenaufwendig als andere Datenmengentypen werden. Weil sie jedoch die Datensätze nicht zwischenspeichern, sind unidirektionale Datenmengen weniger flexibel als andere Datenmengen.&lt;br /&gt;
&lt;br /&gt;
dbExpress-Verbindungen, -Tabellen, -Ansichten und -Stored Procedures, die in einer Datenstrukturansicht angezeigt werden, lassen sich per Drag&amp;amp;amp;Drop in native und verwaltete VCL-Formulare platzieren.&lt;br /&gt;
&lt;br /&gt;
Die Kategorie &#039;&#039;&#039;dbExpress&#039;&#039;&#039; der &#039;&#039;&#039;Tool-Palette&#039;&#039;&#039; enthält Komponenten, die mittels &#039;&#039;&#039;dbExpress&#039;&#039;&#039; auf Datenbankinformationen zugreifen. Dies sind:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Komponenten&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Funktion&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLConnection&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Kapselt eine dbExpress-Verbindung zu einem Datenbankserver.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLDataSet&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Repräsentiert alle über &#039;&#039;&#039;dbExpress&#039;&#039;&#039; verfügbaren Daten oder sendet Befehle an eine Datenbank, auf die über &#039;&#039;&#039;dbExpress&#039;&#039;&#039; zugegriffen wird.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLQuery&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Abfrage-Datenmenge, die eine SQL-Anweisung kapselt und es Anwendungen ermöglicht, auf die Ergebnisdatensätze zuzugreifen.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLTable&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Tabellen-Datenmenge, die alle Zeilen und Spalten einer einzelnen Datenbanktabelle darstellt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLStoredProc&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine auf Stored Procedures basierende Datenmenge, die eine auf einem Datenbankserver definierte Stored Procedure ausführt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSQLMonitor&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Fängt die zwischen einer SQL-Verbindungskomponente und einem Datenbankserver gesendeten Informationen ab und speichert diese in einer Stringliste.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;TSimpleDataSet&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Eine Client-Datenmenge, die mit internen Objekten des Typs &#039;&#039;&#039;TSQLDataSet&#039;&#039;&#039; und &#039;&#039;&#039;TDataSetProvider&#039;&#039;&#039; Daten abruft und Aktualisierungen einträgt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DbExpress verwenden|dbExpress verwenden]]&lt;br /&gt;
* [[DbExpress-Datenmengen verwenden|dbExpress-Datenmengen verwenden]]&lt;br /&gt;
* [[TSQLConnection konfigurieren|TSQLConnection konfigurieren]]&lt;br /&gt;
*[[Mit dem Daten-Explorer Verbindungsinformationen ermitteln|Mit dem Daten-Explorer Verbindungsinformationen ermitteln]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daylight&amp;diff=208317</id>
		<title>Daylight</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daylight&amp;diff=208317"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Time.h - Index|time.h}}&lt;br /&gt;
{{DISPLAYTITLE:_daylight}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Header-Datei&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
time.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;extern int _daylight;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
_daylight wird von den Uhrzeit- und Datumsroutinen verwendet. Sie legt fest, ob die Laufzeitfunktionen (mktime und localtime) die Sommerzeit berücksichtigen müssen, wenn Sie einen Datumswert bearbeiten, der normalerweise von dieser Einstellung betroffen wird. _daylight wird mit den Werten der Umgebungsvariablen TZ initialisiert und auf 1 gesetzt, wenn die Sommerzeit bei Datums- und Zeitkonvertierungen berücksichtigt werden muss. Ist TZ nicht gesetzt, wird der Wert für _daylight vom Betriebssystem bezogen.&lt;br /&gt;
&lt;br /&gt;
[[Category:C++-Referenz]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Makro-Funktionen_f%C3%BCr_Datums-_und_Uhrzeitwerte_(FireDAC)&amp;diff=208315</id>
		<title>Makro-Funktionen für Datums- und Uhrzeitwerte (FireDAC)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Makro-Funktionen_f%C3%BCr_Datums-_und_Uhrzeitwerte_(FireDAC)&amp;diff=208315"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Vorverarbeiten von Anweisungstext (FireDAC)}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die folgende Tabelle enthält die Makro-Funktionen für Datums- und Uhrzeitwerte:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Funktion&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Lokale Ausdrucks-Engine&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_DATE( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_TIME[(Zeitgenauigkeit)]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die aktuelle lokale Uhrzeit zurück. Das Argument Zeitgenauigkeit bestimmt die Sekundengenauigkeit des zurückgegebenen Wertes.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURRENT_TIMESTAMP [(Zeitstempelgenauigkeit)]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle lokale Datum und die lokale Uhrzeit als Zeitstempelwert zurück. Das Argument Zeitstempelgenauigkeit bestimmt die Sekundengenauigkeit des zurückgegebenen Zeitstempels.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURDATE( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | CURTIME( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die aktuelle lokale Uhrzeit zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYNAME(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt einen Zeichen-String zurück, der den datenquellenspezifischen Namen des Tages (z.&amp;amp;nbsp;B. Sunday bis Saturday oder Sun. bis Sat. für eine Datenquelle, die Englisch verwendet, oder Sonntag bis Samstag für eine Datenquelle, die Deutsch verwendet) für den Tagesanteil von Datumsausdr zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFMONTH(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag des Monats auf Basis des Monatsfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;31 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFWEEK(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag der Woche auf Basis des Wochenfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;7 zurück, wobei 1 für Sonntag steht.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | DAYOFYEAR(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Tag des Jahres auf Basis des Jahresfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;366 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | EXTRACT(Extrakt-Feld, Extrakt-Quelle)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt den Extrakt-Feld-Anteil aus Extrakt-Quelle zurück. Das Argument Extrakt-Quelle ist ein Datums/Zeit- oder Intervallausdruck. Das Argument Extrakt-Feld kann eines der folgenden Schlüsselwörter sein:&lt;br /&gt;
* YEAR&lt;br /&gt;
* MONTH&lt;br /&gt;
* DAY&lt;br /&gt;
* HOUR&lt;br /&gt;
* MINUTE&lt;br /&gt;
* SECOND&lt;br /&gt;
&lt;br /&gt;
Die Genauigkeit des zurückgegebenen Wertes wird durch die Implementierung festgelegt. Die Skalierung ist 0, außer wenn SECOND angegeben ist. In diesem Fall ist die Skalierung nicht kleiner als die minimale Sekundengenauigkeit des &amp;quot;Extrakt-Quelle&amp;quot;-Feldes.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | HOUR(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Stunde auf Basis des Stundenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;23 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MINUTE(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Minute auf Basis des Minutenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;59 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MONTH(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt den Monat auf Basis des Monatsfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;12 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | MONTHNAME(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt einen Zeichen-String zurück, der den datenquellenspezifischen Namen des Monats (z.&amp;amp;nbsp;B. January bis December oder Jan. bis Dec. für eine Datenquelle, die Englisch verwendet, oder Januar bis Dezember für eine Datenquelle, die Deutsch verwendet) für den Monatsanteil von Datumsausdr zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | NOW( )&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das aktuelle Datum und die aktuelle Uhrzeit als Zeitstempelwert zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | QUARTER(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das Quartal in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;4 zurück, wobei 1 für das Quartal vom 1. Januar bis zum 31. März steht.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | SECOND(Zeitausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Sekunde auf Basis des Sekundenfeldes in Zeitausdr als Integerwert im Bereich von 0&amp;amp;nbsp;–&amp;amp;nbsp;59 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | TIMESTAMPADD(Intervall, Integer-Ausdr, Zeitstempel-Ausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt den Zeitstempel zurück, der durch Addieren von Integer-Ausdr Intervallen vom Typ Intervall mit Zeitstempel-Ausdr berechnet wird. Gültige Werte von Intervall sind die folgenden Schlüsselwörter:&lt;br /&gt;
* FRAC_SECOND (*)&lt;br /&gt;
* SECOND&lt;br /&gt;
* MINUTE&lt;br /&gt;
* HOUR&lt;br /&gt;
* DAY&lt;br /&gt;
* WEEK&lt;br /&gt;
* MONTH&lt;br /&gt;
* QUARTER&lt;br /&gt;
* YEAR&lt;br /&gt;
&lt;br /&gt;
FRAC_SECOND (Sekundenbruchteil) wird als Milliardstel einer Sekunde ausgedrückt. Die folgende SQL-Anweisung gibt beispielsweise den Namen aller Mitarbeiter zurück und das Datum ihrer einjährigen Betriebszugehörigkeit: SELECT NAME, {fn TIMESTAMPADD(‘YEAR’, 1, HIRE_DATE)} FROM EMPLOYEES. Wenn Zeitstempel-Ausdr ein Zeitwert ist und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsanteil von Zeitstempel-Ausdr auf das aktuelle Datum gesetzt, bevor der Ergebnis-Zeitstempel berechnet wird. Wenn Zeitstempel-Ausdr ein Datumswert ist und Intervall Sekundenbruchteile, Sekunden, Minuten oder Stunden angibt, wird der Zeitanteil von Zeitstempel-Ausdr auf 0 gesetzt, bevor der Ergebnis-Zeitstempel berechnet wird.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | TIMESTAMPDIFF(Intervall, Zeitstempel-Ausdr1, Zeitstempel-Ausdr2)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |Gibt die ganzzahlige Anzahl der Intervalle vom Typ Intervall zurück, um die Zeitstempel-Ausdr2 größer als Zeitstempel-Ausdr1 ist. Gültige Werte von Intervall sind die folgenden Schlüsselwörter:&lt;br /&gt;
* FRAC_SECOND (*)&lt;br /&gt;
* SECOND&lt;br /&gt;
* MINUTE&lt;br /&gt;
* HOUR&lt;br /&gt;
* DAY&lt;br /&gt;
* WEEK&lt;br /&gt;
* MONTH&lt;br /&gt;
* QUARTER&lt;br /&gt;
* YEAR&lt;br /&gt;
&lt;br /&gt;
FRAC_SECOND (Sekundenbruchteil) wird als Milliardstel einer Sekunde ausgedrückt. Die folgende SQL-Anweisung gibt beispielsweise den Namen aller Mitarbeiter zurück und die Anzahl der Jahre ihrer Betriebszugehörigkeit: SELECT NAME, {fn TIMESTAMPDIFF(‘YEAR’, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES. Wenn der Zeitstempelausdruck ein Zeitwert ist und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsanteil dieses Zeitstempels auf das aktuelle Datum gesetzt, bevor die Differenz zwischen den beiden Zeitstempeln berechnet wird. Wenn einer der beiden Zeitstempelausdrücke ein Datumswert ist und Intervall Sekundenbruchteile, Sekunden, Minuten oder Stunden angibt, wird der Zeitanteil dieses Zeitstempels auf 0 gesetzt, bevor die Differenz zwischen den beiden Zeitstempeln berechnet wird.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | WEEK(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt die Woche des Jahres auf Basis des Wochenfeldes in Datumsausdr als Integerwert im Bereich von 1&amp;amp;nbsp;–&amp;amp;nbsp;53 zurück.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | YEAR(Datumsausdr)&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | Gibt das Jahr auf Basis des Jahresfeldes in Datumsausdr als Integerwert zurück. Der Bereich ist von der Datenquelle abhängig.&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; | +&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Einige DBMSs können nicht mit FRAC_SECOND arbeiten.&lt;br /&gt;
&lt;br /&gt;
[[Category:FireDAC]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Server-Anwendung&amp;diff=208313</id>
		<title>DataSnap-Server-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Server-Anwendung&amp;diff=208313"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn Sie auf TObject basierte Typen auf einem C++-DataSnap-Server bereitstellen möchten, müssen sich die Typen in einem {{Delphi}}-Package befinden. Wechseln Sie zum Aktivieren von {{Delphi}}-Packages zu &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Projekt &amp;amp;gt; Optionen &amp;amp;gt; Packages&#039;&#039;&#039;&amp;lt;/font&amp;gt;, und wählen Sie die Option &#039;&#039;&#039;Laufzeit-Packages verwenden&#039;&#039;&#039; aus. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
&lt;br /&gt;
* [[Erstellen eines DataSnap-Servers|Erstellen eines DataSnap-Servers]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
* [[Erstellen von DataSnap-Servermethoden-Proxies|Erstellen von DataSnap-Servermethoden-Proxies]]&lt;br /&gt;
* [[Bereitstellen von DataSnap-Servermethoden|Bereitstellen von DataSnap-Servermethoden]]&lt;br /&gt;
* [[Verwendung von Callback-Funktionen|Verwendung von Callback-Funktionen]]&lt;br /&gt;
* [[Eigenschaft LifeCycle der Serverklasse|Eigenschaft LifeCycle der Serverklasse]]&lt;br /&gt;
* [[Überwachen und Steuern von DataSnap-TCP/IP-Verbindungen|Überwachen und Steuern von DataSnap-TCP/IP-Verbindungen]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden#Client-Anwendung erstellen|Tutorial: DataSnap-Server/Client]]&lt;br /&gt;
* [[Steuerelemente für DataSnap-Server|Steuerelemente für DataSnap-Server]][[en:DataSnap Server Application|en:DataSnap Server Application]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-REST-Nachrichtenprotokoll&amp;diff=208311</id>
		<title>DataSnap-REST-Nachrichtenprotokoll</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-REST-Nachrichtenprotokoll&amp;diff=208311"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-REST}}&lt;br /&gt;
&lt;br /&gt;
Dieses Thema beschreibt das REST-Nachrichtenprotokoll für DataSnap, das den Remote-Aufruf von Servermethoden sowie die Registrierung von Heavyweight-Callbacks ermöglicht. Anhand der Informationen in diesem Thema können Sie in jeder beliebigen Sprache Clients implementieren, die mit einem DataSnap-Server über HTTP-Anforderungen kommunizieren können.&lt;br /&gt;
&lt;br /&gt;
==Remote-Methodenaufruf==&lt;br /&gt;
&lt;br /&gt;
Wenn ein DataSnap-Server über eine aktive Komponente zur Behandlung von HTTP-Verbindungen verfügt, wird ein Nachrichtenprotokoll bereitgestellt, wobei HTTP-Anforderungen an den Server gesendet werden können, um public-Methoden einer für den Server mit einer TDSServerClass-Komponente registrierten Klasse aufzurufen. Am einfachsten rufen Sie eine Servermethode über eine GET-Anforderung mit dem folgenden URL und ohne Inhalt im Nachrichtenrumpf auf:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[ClassName]/[MethodName]/[ParamValue]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Port&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ParamValue&amp;lt;/code&amp;gt; sind optional. &amp;quot;datasnap&amp;quot; und &amp;quot;rest&amp;quot; sind gewissermaßen auch optional und müssten – abhängig von den Werten der Eigenschaften DSContext und RESTContext für die HTTP-Verbindung auf dem Server – geändert werden.&lt;br /&gt;
&lt;br /&gt;
===Parameter in dem URL===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ParamValue&amp;lt;/code&amp;gt; repräsentiert eine durch Schrägstrich (/) getrennte Liste mit Parameterwerten, die den für die aufzurufende Servermethode erforderlichen Eingabeparametern entsprechen. Wenn die Servermethode (Funktion/Prozedur) keine Eingabeparameter hat, dann darf hinter dem Methodennamen in dem URL nichts mehr stehen. Durch zwei Schrägstriche (//) im Abschnitt des URLs, der die Parameterwerte repräsentiert, wird der Wert des Parameters an dieser Indexposition auf einen leeren String gesetzt.&lt;br /&gt;
&lt;br /&gt;
Die auf diese Weise übergebenen Werte müssen URL-sicher verschlüsselt sein, was auch für die Verschlüsselung von Unicode-Zeichen gilt. Werte mit einer JSON-Objekt- oder JSON-Array-Repräsentation dürfen nicht auf diese Weise übergeben werden: sie müssen im Rumpf der HTTP-Anforderung übergeben werden, und der Anforderungstyp muss POST oder PUT sein.&lt;br /&gt;
&lt;br /&gt;
===Parameter im Anforderungsrumpf===&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine Servermethode aufrufen möchten, die einen nicht von einer GET- oder DELETE-Anforderung unterstützten Eingabeparameter hat (z.B. ein Parameter, der nicht als String, Zahl, Boolean oder Null dargestellt werden kann), oder wenn Sie einfach einen oder mehrere Parameter im Inhalt der Anforderung übergeben möchten, müssen Sie den Anforderungstyp POST oder PUT verwenden.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie beispielsweise eine Servermethode wie die folgende aufrufen möchten:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  function TServerMethods1.updateEchoAttribute(Key: String; Obj: TJSONObject): String;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Dann sollte Ihre Anforderung folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  POST /datasnap/rest/TServerMethods1/EchoAttribute/Attr1 HTTP/1.1&lt;br /&gt;
  ....*additional headers*...&lt;br /&gt;
  Accept: application/json&lt;br /&gt;
  Content-Type: text/plain;charset=UTF-8&lt;br /&gt;
  &lt;br /&gt;
  {&amp;quot;Attr1&amp;quot;:&amp;quot;ValueToReturn&amp;quot;}&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Diese Anforderung enthält einige Einträge, die näher erläutert werden müssen. Beachten Sie zunächst, dass der übergebene Methodenname &amp;quot;EchoAttribute&amp;quot; und nicht &amp;quot;updateEchoAttribute&amp;quot; lautet. Standardmäßig wird nämlich das Präfix &amp;quot;update&amp;quot; jeder Methode zugeordnet, die mit POST aufgerufen wird. Ebenso wird das Präfix &amp;quot;cancel&amp;quot; für DELETE-Anforderungen und das Präfix &amp;quot;accept&amp;quot; für PUT-Anforderungen verwendet. Diese Art der Präfixverwendung kann durch Setzen des Methodennamens in Anführungszeichen vermieden werden. Die erste Zeile der Anforderung würde dann folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 POST /datasnap/rest/TServerMethods1/%22updateEchoAttribute%22/Attr1 HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
Diese Anforderung ruft auch die updateEchoAttribute-Servermethode auf, aber die Anführungszeichen verhindern, dass ein zusätzliches &amp;quot;update&amp;quot; vor den angegebenen Servernamen gesetzt wird. Das Setzen des Methodennamens in Anführungszeichen ermöglicht zudem den Aufruf von Servermethoden mit POST, PUT oder DELETE, denen keine dem Anforderungstyp entsprechenden Namen vorangestellt werden. Falls die Servermethode zum Beispiel folgendermaßen lautet:&lt;br /&gt;
&lt;br /&gt;
 function TServerMethods1.EchoAttribute(Key: String; Obj: TJSONObject): String;&lt;br /&gt;
&lt;br /&gt;
Dann wäre das Setzen des Methodennamens in Anführungszeichen erforderlich, da der Wert eines TJSONObject in dem Anforderungs-URL nicht unterstützt wird. Das heißt, eine GET-Anforderung, der einzige Anforderungstyp, der standardmäßig kein Methodenpräfix voraussetzt, kann nicht verwendet werden. Die POST-Anforderung würde folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 POST /datasnap/rest/TServerMethods1/%22EchoAttribute%22/Attr1 HTTP/1.1&lt;br /&gt;
&lt;br /&gt;
All diese Beispiele haben dasselbe Ergebnis, wobei die Servermethode mit &amp;quot;Attr1&amp;quot; als Wert des Parameters &amp;lt;code&amp;gt;Key&amp;lt;/code&amp;gt; aufgerufen wird und der Wert von Obj ein JSON-Objekt ist, das eine Eigenschaft &amp;quot;Attr1&amp;quot; und einen zugehörigen Wert hat. Der Inhalt der Antwort enthält das Ergebnis des Aufrufs der Servermethode, das in diesem Beispiel der String &amp;quot;ValueToReturn&amp;quot; wäre.&lt;br /&gt;
&lt;br /&gt;
Wenn Sie mehrere Parameterwerte in dem Anforderungsinhalt übergeben möchten, müssen Sie sie in der richtigen Reihenfolge in ein JSON-Array setzen, und dieses Array als Wert eines JSON-Objektpaars mit dem Schlüsselwort &amp;quot;_parameters&amp;quot; angeben. Das JSON-Ergebnisobjekt muss als String dargestellt und folgendermaßen als Inhalt der Anforderung gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;_parameters&amp;quot;:[&amp;quot;Param1&amp;quot;, &amp;quot;Param2&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
Bei diesem Format werden zuerst die Eingabeparameter aus dem Anforderungs-URL und dann die übrigen Eingabewerte der Reihenfolge nach aus dem Array _parameters übernommen.&lt;br /&gt;
&lt;br /&gt;
In der Anforderung sind Abfrageparameter zulässig. Der Benutzer erhält dann aus Servermethoden Zugriff auf die im URL übergebenen Abfrageparameter durch Abrufen der &#039;&#039;&#039;Aufrufs-Metadaten&#039;&#039;&#039; (mit einem Aufruf von &#039;&#039;&#039;GetInvocationMetadata()&#039;&#039;&#039; nach dem Hinzufügen der [[lib_de:Data.DBXPlatform|DBXPlatform]] zu der &#039;&#039;&#039;uses&#039;&#039;&#039;-Klausel) und Zugreifen auf die Liste der gespeicherten Parameter. Dem HTTP-Dienst des Servers wurde das Ereignis &#039;&#039;&#039;FormatResult&#039;&#039;&#039; hinzugefügt, mit dem die JSON-Antwort in einem beliebigen Format für Methodenaufrufe zurückgegeben werden kann.&lt;br /&gt;
&lt;br /&gt;
===Aufrufantwort===&lt;br /&gt;
&lt;br /&gt;
Die von einer Aufrufanforderung zurückgegebene Antwort hat einen Antworttext, der eine String-Repräsentation eines JSON-Objekts ist, das etwa folgendermaßen aussieht:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[&amp;quot;ValueToReturn&amp;quot;]}&lt;br /&gt;
&lt;br /&gt;
Bei korrektem Zerlegen in eine JSON-Objektinstanz können Sie für die Eigenschaft &amp;quot;result&amp;quot; das JSON-Array ermitteln. Dieses Array enthält die Werte für alle Parameter in der Reihenfolge ihrer Anordnung in der Signatur der Servermethode, die zurückgegeben werden (out, var, Ergebnistypen). Das Ergebnis ist immer der letzte Eintrag in dem Array, und in diesem Beispiel ist es ein JSON-String mit dem Wert, der von der Implementierung der Servermethode EchoAttribute zurückgegeben würde.&lt;br /&gt;
&lt;br /&gt;
Wenn während des Aufrufs auf dem Server ein Fehler auftritt, wie z.B. eine abgelaufene Sitzung, ein unbefugter Benutzer oder ungültige Eingabewerte, dann enthält das zurückgegebene JSON-Objekt anstatt einer &amp;quot;result&amp;quot;-Eigenschaft eine &amp;quot;error&amp;quot;- oder &amp;quot;SessionExpired&amp;quot;-Eigenschaft, wie die folgende:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;SessionExpired&amp;quot;:&amp;quot;Die angegebene Sitzung ist abgelaufen, weil sie inaktiv war oder eine ungültige Sitzungs-ID hatte&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
===Festlegen des Stream-Antworttyps===&lt;br /&gt;
&lt;br /&gt;
Wenn das Ergebnis eines Methodenaufrufs ein TStream-Objekt ist, dann kann der Stream entweder als JSON-Array oder als Inhalts-Stream der Antwort zurückgegeben werden. Mit dem URL-Parameter &amp;quot;json&amp;quot; können Sie folgendermaßen festlegen, ob ein JSON-Array oder ein Inhalts-Stream zurückgegeben werden soll:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[Class]/[Method]/?json=true&lt;br /&gt;
&lt;br /&gt;
Sie können den Wert auf &amp;quot;True&amp;quot; oder &amp;quot;False&amp;quot; setzen. Bei &amp;quot;True&amp;quot; wird das Ergebnis immer als JSON-Array zurückgegeben. Bei &amp;quot;False&amp;quot; wird das Ergebnis als Inhalts-Stream zurückgegeben, sofern keine anderen var/out/result-Parameter zurückgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==Authentifizierung==&lt;br /&gt;
&lt;br /&gt;
Wenn für den Server eine Authentifizierung erforderlich ist, dann müssen Sie im &amp;quot;Autorisierungs&amp;quot;-Header der Anforderung Ihre Authentifizierungsdaten (Benutzername und Passwort) korrekt formatiert übergeben. Dies ist aber nur erforderlich, wenn Sie keine Sitzungs-ID in der Anforderung angeben. Das Format des Wertes des Autorisierungs-Headers lautet:&lt;br /&gt;
&lt;br /&gt;
 Basic base64(Benutzer:Passwort)&lt;br /&gt;
&lt;br /&gt;
Oder, falls der Benutzername beispielsweise &amp;quot;admin&amp;quot; und das Passwort ebenfalls &amp;quot;admin&amp;quot; ist:&lt;br /&gt;
&lt;br /&gt;
 Basic YWRtaW46YWRtaW4=&lt;br /&gt;
&lt;br /&gt;
Der String für die base64-Kodierung muss ein einzelner String sein, der den Namen und das Passwort durch Doppelpunkt getrennt enthält.&lt;br /&gt;
&lt;br /&gt;
==Anforderungsfilter==&lt;br /&gt;
&lt;br /&gt;
DataSnap verwendet zum Filtern von Ergebnissen das Konzept der Anforderungsfilter. Diese vordefinierten Filter verbinden in eine API, mit der in dem URL die Filter für den jeweiligen Parameter und die an diesen Filter zu übergebenden Werte festgelegt werden können. Eine Serverfunktion könnte z.B. einen sehr großen String zurückgeben, wovon Sie aber möglicherweise nur die ersten Zeichen benötigen. In diesem Fall können Sie mit dem SubString-Filter den Bereich des Strings festlegen, an dem Sie interessiert sind. Das folgende Beispiel ist ein URL für eine Serverfunktion mit einem einzelnen Eingabeparameter und einem String-Ergebnis:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/[Class]/[Method]/[ParamValue]?ss.r=1,3&lt;br /&gt;
&lt;br /&gt;
Der Teil nach dem &amp;quot;?&amp;quot; definiert, welcher Filter für welche(n) Parameter verwendet werden soll. In diesem Fall wird für den Rückgabe-String (wenn kein Parameterindex angegeben ist, wird der Filter auf das Ergebnis angewendet) mit der Bereichsfunktion des SubString-Filters festgelegt, dass das Ergebnis ein aus drei Zeichen bestehender Teilstring sein soll, der mit dem zweiten Zeichen des Ergebnisses beginnt.&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden Sie unter [[Anforderungsfilter|Anforderungsfilter]].&lt;br /&gt;
&lt;br /&gt;
==Sitzungsinformationen==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie eine Servermethode aufrufen, die Sie nicht in einer Sitzungs-ID der Anforderung übergeben haben, wird eine neue Sitzung auf dem Server erstellt, und die Sitzungs-ID wird in dem &amp;quot;Pragma&amp;quot;-Header bereitgestellt. Der für diesen Header gespeicherte Wert enthält zwei Schlüssel, &amp;quot;dssession&amp;quot; und &amp;quot;dssessionexpires&amp;quot;. Der erste ist die ID der Sitzung auf dem Server und der zweite ist eine Schätzung der verbleibenden Millisekunden bis zum Ablauf der Sitzung. Wenn &amp;quot;dssessionexpires&amp;quot; nicht angegeben oder ein negativer Wert ist, dann läuft die Sitzung nicht ab und muss geschlossen werden, wenn sie vom Client nicht mehr benötigt wird. Die Sitzungs-ID müssen Sie in dem &amp;quot;Pragma&amp;quot;-Header jeder weiteren Anforderung im folgenden Format übergeben:&lt;br /&gt;
&lt;br /&gt;
 dssession=[Sitzungs-ID]&lt;br /&gt;
&lt;br /&gt;
Anhand der Millisekunden bis zum Sitzungsablauf können Sie feststellen, ob die Sitzungs-ID nicht mehr gültig ist und entscheiden, sie nicht mit künftigen Anforderungen zu übergeben, weil sie wahrscheinlich ungültig wäre und einen SessionExpired-Fehler liefern würde. Wenn Sie ein SessionExpired-Ergebnis vom Server erhalten, müssen Sie die gespeicherte Sitzungs-ID löschen und zulassen, dass der Server bei der nächsten Anforderung eine neue ID vergibt.&lt;br /&gt;
&lt;br /&gt;
Um die Sitzung vor deren Ablauf zu schließen, führen Sie eine GET-Anforderung mit dem folgenden URL aus und übergeben im Pragma-Header der Anforderung die Sitzungs-ID, wie oben erläutert:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/CloseSession/&lt;br /&gt;
&lt;br /&gt;
Damit wird die Sitzung mit der angegebenen ID beendet und bei Erfolg der folgende Antworttext zurückgegeben (bei Misserfolg wird die SessionExpired-Meldung zurückgegeben):&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[true]}&lt;br /&gt;
&lt;br /&gt;
==Zwischenspeicherung von Sitzungsparametern==&lt;br /&gt;
&lt;br /&gt;
Eine Verwendung für Sitzungen auf dem Server ist die optionale Speicherung von Parameterwerten aus früheren Aufrufen, damit Ergebnisse eines Methodenaufrufs mehrfach abgerufen werden können, ohne dass die Methode selbst erneut aufgerufen werden muss. Parameter, für die eine JSON-Objekt- oder JSON-Array-Repräsentation erforderlich ist, wie z.B. Streams und benutzerdefinierte Typen, können im Zwischenspeicher gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
Um festzulegen, dass der Zwischenspeicher verwendet werden soll, müssen Sie in der Anforderung den Header-Wert &amp;quot;Accept&amp;quot; auf &amp;quot;application/rest&amp;quot; setzen. Wenn Sie eine Servermethode aufrufen, deren Ergebnis beispielsweise ein TJSONObject ist, wird ein neuer Zwischenspeichereintrag erstellt, der den Zugriff auf das JSON-Ergebnisobjekt ermöglicht. Der vom Aufruf zurückgegebene Wert hat die folgende Form:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[&amp;quot;0/0/0&amp;quot;],&amp;quot;cacheId&amp;quot;:0,&amp;quot;cmdIndex&amp;quot;:0}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;0/0/0&amp;quot; steht an der Stelle, an der das tatsächliche Aufrufergebnis erscheinen würde. Dabei handelt es sich um den Bezeichner und den relativen Pfad zu dem jeweiligen Eintrag im Zwischenspeicher. Das Format dieses relativen Pfades kann folgendermaßen interpretiert werden:&lt;br /&gt;
&lt;br /&gt;
 [Zwischenspeicher-Eintrags-ID]/[Befehlsindex]/[Parameterindex]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Zwischenspeicher-Eintrags-ID&amp;lt;/code&amp;gt; ist der eindeutige Bezeichner für den Methodenaufruf, den Sie ausführen. Nur Ausführungen, die Ergebnisse im Zwischenspeicher speichern, erhalten eindeutige Bezeichner. &amp;lt;code&amp;gt;Befehlsindex&amp;lt;/code&amp;gt; gibt an, zu welchem Befehl der Ausführung das Ergebnis gehört. Dies ist nur ein Wert ungleich Null, wenn es sich um eine Stapelausführung (gleichzeitig mehrere Servermethoden) handelt. &amp;lt;code&amp;gt;Parameterindex&amp;lt;/code&amp;gt; ist der Index des komplexen Parameters, der zurückgegeben werden soll. Der Index beginnt bei Null und basiert auf den komplexen Parametern des Befehls, nicht auf allen Parametern des Befehls.&lt;br /&gt;
&lt;br /&gt;
Die weiteren Werte von &amp;quot;cacheId&amp;quot; und &amp;quot;cmdIndex&amp;quot; sind dieselben Werte, die als die ersten beiden Zahlen in &amp;quot;0/0/X&amp;quot; erscheinen. Wenn für den Methodenaufruf mehr als ein zwischengespeichertes Ergebnis vorhanden ist, enthält das Array &amp;quot;result&amp;quot; mehrere Einträge, die aber alle die &amp;quot;cacheId&amp;quot;- und &amp;quot;cmdIndex&amp;quot;-Werte gemeinsam nutzen, da sie Teil desselben zwischengespeicherten Eintrags und Ergebnisse desselben Methodenaufrufs sind.&lt;br /&gt;
&lt;br /&gt;
Mit diesen relativen Pfaden erstellen Sie einen Zwischenspeicher-URL. Der Zwischenspeicher-URL verwendet &amp;quot;cache&amp;quot; (CacheContext) anstelle von &amp;quot;rest&amp;quot; (RESTContext), und ihm wird dann der im Aufrufergebnis zurückgegebene relative URL nachgestellt.&lt;br /&gt;
&lt;br /&gt;
Zwischenspeicher-URLs unterstützen die Anforderungstypen GET und DELETE. Wenn GET gesendet wird, sind die folgenden URLs verfügbar:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt ein JSON-Objekt zurück, das den Inhalt des Zwischenspeichers beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt ein JSON-Objekt zurück, das das Zwischenspeicherungsobjekt mit der angegebenen ID beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)/(CmdIndex)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt eine JSON-Repräsentation des angegebenen Befehls zurück.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)/(CmdIndex)/(ParameterIndex)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Gibt den tatsächlichen Parameter als JSON oder Stream zurück.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bei einem DELETE-Befehl werden die folgenden URLs unterstützt:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Löscht alle zwischengespeicherten Einträge.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;http://host:port/datasnap/cache/(CacheID)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
| Löscht den zwischengespeicherten Eintrag und alle zugehörigen Befehle/Parameter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn Sie den Zwischenspeicher nicht leeren, wird er beim Ablauf der Sitzung geleert und freigegeben. &lt;br /&gt;
Weitere Informationen finden Sie unter [[Zwischenspeicherung von DBX-Parametern|Zwischenspeicherung von DBX-Parametern]].&lt;br /&gt;
&lt;br /&gt;
==Heavyweight-Callbacks==&lt;br /&gt;
&lt;br /&gt;
Heavyweight-REST-Callbacks ermöglichen einem Client eine HTTP-Anforderung mit langen Ausführungszeiten zu senden, die sich wie eine beim Server registrierte Callback-Funktion verhält. Der Anforderung sind Informationen zugeordnet, die dem Server mitteilen, wie er zu antworten hat. Wird eine Antwort abgerufen, wird eine neue Anforderung an den Server gesendet, um die Callback-Funktion zurück in einen empfangsbreiten Zustand zu versetzen.&lt;br /&gt;
&lt;br /&gt;
===Registrieren einer Heavyweight-Callback-Funktion (Client-Kanal)===&lt;br /&gt;
&lt;br /&gt;
Die ursprüngliche Anforderung, die das Heavyweight-Callback-Handshake startet, sollte folgendermaßen formatiert und als GET-Anforderung gesendet werden:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/ConsumeClientChannel/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]//&lt;br /&gt;
&lt;br /&gt;
Mit diesem Handshake wird eigentlich eine Callback-Funktion registriert, die selbst eine oder mehrere Callbacks enthält, zu denen sie verzweigt. SCN ist der Name des Serverkanals, für den diese Callback-Funktion empfangsbereit sein soll. Dieser Wert kann alles sein, was der Server möglicherweise senden oder mitteilen kann. SCNS ist eine durch Komma getrennte Liste der Kanalnamen des Servers für die registrierte Callback-Funktion. Diese Liste kann leer (die Callback-Funktion verwendet einfach den &amp;lt;code&amp;gt;ServerChannelName&amp;lt;/code&amp;gt; des Kanals) oder eine Liste sein, die dem &amp;lt;code&amp;gt;ServerChannelName&amp;lt;/code&amp;gt; des Kanals hinzugefügt wird. Weitere Informationen dazu finden Sie in der DocWiki-Dokumentation über Heavyweight-REST-Callbacks. Wenn der Server etwa folgendermaßen sendet:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  Val := TJSONString.Create(Memo1.Text);&lt;br /&gt;
  [DSServer].BroadcastMessage(&#039;MemoChannel&#039;, Val);&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Dann soll der Wert von SCN als &amp;quot;MemoChannel&amp;quot; übergeben werden, damit Sie diesen speziellen Broadcast empfangen können.&lt;br /&gt;
&lt;br /&gt;
CHID ist eine eindeutige ID für den Callback-Kanal des Clients. Dies kann Verschiedenes sein, aber der Aufruf schlägt fehl, wenn CHID nicht für die bereits auf dem Server vorhandenen Werte eindeutig ist. CBID ist eine eindeutige ID für die erste Callback-Funktion des Callback-Kanals des Clients. Weil ein Callback-Kanal immer mindestens eine Callback-Funktion enthalten muss, ist dieser Parameter erforderlich. Weitere untergeordnete Callbacks können später registriert werden. ST ist ein Sicherheits-Token, das Sie hier definieren. In allen künftigen Aufrufen zur Änderung des Client-Kanals, wie z.B. Hinzufügen oder Entfernen von Callbacks, müssen Sie dieses Sicherheits-Token angeben, um sich bei dem zu modifizierenden Kanal zu validieren. Der letzte Parameter (//) wird beim Registrieren des Kanals als leerer String übergeben.&lt;br /&gt;
&lt;br /&gt;
Wenn die Registrierung erfolgreich erstellt wurde, wird sofort eine Antwort zurückgegeben, die etwa folgendermaßen aussieht:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;invoke&amp;quot;:[&amp;quot;cb12345&amp;quot;,{&amp;quot;created&amp;quot;:true},1]}]}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;cb12345&amp;quot; ist dabei die eindeutige ID der Callback-Funktion, die bei der Erstellung des Client-Kanals (CBID) registriert wurde. Senden Sie sofort eine weitere Anforderung (siehe dazu die Schritte weiter unten), damit die Callback-Funktion aktiv bleibt.&lt;br /&gt;
&lt;br /&gt;
===Stoppen von Heavyweight-Callbacks===&lt;br /&gt;
&lt;br /&gt;
Senden Sie zum Stoppen einer zuvor erstellten Heavyweight-Callback-Funktion eine GET-Anforderung an den folgenden URL:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/CloseClientChannel/[SCN]/[CHID]/[ST]&lt;br /&gt;
&lt;br /&gt;
SCN, CHID und ST sind dabei dieselben Werte, die beim ersten Erstellen übergeben wurden.&lt;br /&gt;
&lt;br /&gt;
===Hinzufügen einer Callback-Funktion zu einem Client-Kanal===&lt;br /&gt;
&lt;br /&gt;
Ein Client-Kanal kann mehrere verschachtelte Callback-Funktionen enthalten. Es muss aber mindestens eine vorhanden sein. Senden Sie zum Registrieren einer weiteren Callback-Funktion bei dem Client-Kanal den folgenden URL mit einer GET-Anforderung:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/RegisterClientCallbackServer/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]/&lt;br /&gt;
&lt;br /&gt;
SCN, CHID, SCNS und ST sind dabei dieselben Werte, die Sie beim Erstellen des Client-Kanals angegeben haben, und CBID ist eine für den Client-Kanal eindeutige ID für die neue Callback-Funktion.&lt;br /&gt;
&lt;br /&gt;
===Entfernen einer Callback-Funktion aus einem Client-Kanal===&lt;br /&gt;
&lt;br /&gt;
Callbacks können aus einem Client-Kanal entfernt werden. Wenn Sie die letzte Callback-Funktion entfernen, wird der Kanal geschlossen. Senden Sie zum Entfernen einer Callback-Funktion den folgenden URL mit einer GET-Anforderung:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/UnregisterClientCallback/[SCN]/[CHID]/[CBID]/[SCNS]/[ST]/&lt;br /&gt;
&lt;br /&gt;
SCN, CHID, SBID, SCNS und ST sind dabei dieselben Werte, die Sie beim Registrieren der Callback-Funktion (entweder mit der ConsumeClientChannel- oder der RegisterClientCallbackServer-Methode) übergeben haben.&lt;br /&gt;
&lt;br /&gt;
===Antworten vom Server===&lt;br /&gt;
&lt;br /&gt;
Eine Antwort auf eine Heavyweight-Callback-Anforderung kann in verschiedenen Situationen auftreten. Wie bereits weiter oben erwähnt, erfolgt eine, wenn der Kanal erfolgreich erstellt wurde. Eine weitere, wenn die Heavyweight-Callback-Funktion geschlossen wird. Die häufigste Antwort ist jedoch ein Broadcast oder eine Nachricht. Nachrichten von einem Server zielen auf eine einzelne Callback-Funktion eines Client-Kanals ab, während Broadcasts an alle Callbacks ausgegeben werden sollten.&lt;br /&gt;
&lt;br /&gt;
Bei einer Callback-Funktion mit der ID &amp;quot;cd12345&amp;quot; könnte ein Antworttext einer gesendeten Anforderung folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;invoke&amp;quot;:[&amp;quot;cb12345&amp;quot;,&amp;quot;Hello World&amp;quot; ,1]}]}&lt;br /&gt;
&lt;br /&gt;
Dieser Antworttext bedeutet, dass ein Aufruf (Nachricht) vom Server mit dem Inhalt gesendet wurde, dass die Callback-Funktion mit der ID &amp;quot;cd12345&amp;quot; aufgerufen und der String-Wert &amp;quot;Hello World&amp;quot; vom Typ 1 übergeben werden soll. Typ 1 bedeutet, dass der Wert als JSON behandelt werden soll. Typ 2 bedeutet, dass er eine JSON-Objektrepräsentation eines Benutzerobjekts ist. Typ 1 ist vermutlich gebräuchlicher. Der Wert muss kein String sein, er kann ein beliebiger JSON-Wert sein.&lt;br /&gt;
&lt;br /&gt;
Sendet der Server einen Broadcast, dann wird er an alle Callbacks des Client-Kanals gerichtet und enthält daher keine ID. Der Antworttext würde folgendermaßen lauten:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;broadcast&amp;quot;:[&amp;quot;Hello World&amp;quot;,1]}]}&lt;br /&gt;
&lt;br /&gt;
Wird die Heavyweight-Callback-Funktion geschlossen, wird der folgende Antworttext zurückgegeben:&lt;br /&gt;
&lt;br /&gt;
 {&amp;quot;result&amp;quot;:[{&amp;quot;close&amp;quot;:true}]}&lt;br /&gt;
&lt;br /&gt;
===Beantworten einer Antwort vom Server===&lt;br /&gt;
&lt;br /&gt;
Wenn die Heavyweight-Callback-Anforderung eine Antwort vom Server erhält, müssen Sie die Botschaft so schnell wie möglich behandeln und dann eine neue Anforderung ausführen. Die Anforderung, die Sie senden, ist fast identisch mit der Anforderung zum Registrieren des Client-Kanals, mit nur einigen kleinen Unterschieden. Erstens muss der Befehl als POST gesendet werden. Der URL der Anforderung würde folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
 http://host:port/datasnap/rest/DSAdmin/ConsumeClientChannel/[SCN]/[CHID]//[ST]&lt;br /&gt;
&lt;br /&gt;
CBID ist ein leerer String (weil keine neuen Callbacks registriert werden) und weil es sich um ein POST handelt, wird der letzte Parameter (ein leerer String; zwei Schrägstriche für die Registrierung des Client-Kanals) weggelassen. Dieser wird im Anforderungsrumpf übergeben.&lt;br /&gt;
&lt;br /&gt;
Der Anforderungsrumpf muss das vom Client-Kanal zurückgegebene Ergebnis (das ein JSON-Wert im String-Format sein kann) enthalten. Im Allgemeinen hat es sich bewährt entweder &amp;quot;True&amp;quot; oder &amp;quot;False&amp;quot; zurückzugeben. Wenn die Benachrichtigung ausgeführt wurde, sollte das Ergebnis der Wert sein, der für die spezifische, aufzurufende Callback-Funktion zurückgegeben wurde. Wenn der Broadcast ausgeführt wurde, sollte der zurückgegebene Wert auf allen von den Callbacks gelieferten Werten basieren (z.B. &amp;quot;False&amp;quot; außer alle Callbacks haben &amp;quot;True&amp;quot; zurückgegeben).&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen finden Sie unter [[Codeintensive REST-Callback-Funktionen|Codeintensive REST-Callback-Funktionen]].&lt;br /&gt;
&lt;br /&gt;
==Ein Beispiel für Übertragungen mit PHP DataSnap REST==&lt;br /&gt;
&lt;br /&gt;
Das folgende native PHP-Codebeispiel verwendet DataSnap REST für die Übergabe eines Arrays.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
  &amp;lt;?php&lt;br /&gt;
  // type   -&amp;gt; unit name (uCidade) . object name (TCidade)&lt;br /&gt;
  // fileds -&amp;gt; fields must be the same in declared class&lt;br /&gt;
  $cidade = array( &amp;quot;type&amp;quot; =&amp;gt; &amp;quot;uCidade.TCidade&amp;quot; , &amp;quot;id&amp;quot; =&amp;gt; 1 , &amp;quot;fields&amp;quot; =&amp;gt; array ( &amp;quot;FId&amp;quot; =&amp;gt; 41000 , &amp;quot;FDescricao&amp;quot; =&amp;gt; &amp;quot;LINS&amp;quot; , &amp;quot;FUF&amp;quot; =&amp;gt; &amp;quot;SP&amp;quot; ) );&lt;br /&gt;
  $url  = &#039;http://localhost:8080/datasnap/rest/TServerMethodsMain/%22AddCidade%22/&#039; ;&lt;br /&gt;
  $ch = curl_init() ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_HTTPHEADER, array ( &amp;quot;Accept: application/json&amp;quot; , &amp;quot;Content-Type: text/xml; charset=utf-8&amp;quot; ) ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_HEADER , FALSE ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_RETURNTRANSFER , true ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_POST , TRUE ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_URL , $url ) ;&lt;br /&gt;
  curl_setopt( $ch , CURLOPT_POSTFIELDS , json_encode( $cidade ) ) ;&lt;br /&gt;
  $result = curl_exec( $ch ) ;&lt;br /&gt;
 &lt;br /&gt;
  echo &#039;&amp;lt;pre&amp;gt;&#039;;&lt;br /&gt;
  print_r ($result);&lt;br /&gt;
  echo &#039;&amp;lt;/pre&amp;gt;&#039;;&lt;br /&gt;
  ?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; RAD PHP hat einen eigenen Proxy-Generator, es generiert aber kein [[lib_de:System.JSON.TJSONObject|TJSONObject]], wie aus dem obigen Beispiel ersichtlich.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-REST-Client-Module&amp;diff=208309</id>
		<title>Experte für DataSnap-REST-Client-Module</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-REST-Client-Module&amp;diff=208309"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei|Datei (Menü)}}&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;&amp;quot;&amp;gt;hcDDataSnapRESTClientModule&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{Delphi}}-Projekte &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-REST-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{CBuilderUI}} &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-REST-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Der Experte für DataSnap-Client-Module ist nur verfügbar, nachdem Sie einen DataSnap-Server erstellt haben.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Experte für DataSnap-REST-Client-Module==&lt;br /&gt;
&lt;br /&gt;
DataSnap-REST-Client-Module ermöglichen von der IDE aus eine einfache Verbindung zu einem DataSnap-Server. Erstellen Sie zuerst eine neue VCL-Formularanwendung, und wählen Sie dann über das Menü &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu&#039;&#039;&#039;&amp;lt;/font&amp;gt; den Eintrag &#039;&#039;&#039;DataSnap-REST-Client-Modul&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Experte für DataSnap-REST-Client-Module ist dem Experten für DataSnap-Client-Module sehr ähnlich, enthält aber standardmäßig nur drei Schritte. Die folgenden Bildern zeigen die drei Schritte dieses Experten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der erste Schritt des Experten für DataSnap-REST-Client-Module ist fast identisch mit dem Experten für DataSnap-Client-Module. Sie wählen hier den Speicherort des Computers aus, auf dem der DataSnap-Server ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IIm zweiten Schritt des Experten müssen Sie Informationen zu dem Typ des DataSnap-Servers für die konfigurierte Verbindung angeben. Wie bei den anderen Schritten ist jede Option selbsterklärend: Klicken Sie darauf, und der Experte zeigt einen Hinweis zu der ausgewählten Option an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSRESTClientModule3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im dritten Schritt des Experten für DataSnap-REST-Client-Module müssen Sie den Kommunikations-Port, den DataSnap-Kontext, den Benutzernamen und das Passwort angeben, um zur das Client-Modul fertigzustellen. Der Experte bietet auch die Möglichkeit, die Verbindung mit der Schaltfläche &#039;&#039;&#039;Verbindung testen&#039;&#039;&#039; zu überprüfen. Damit wird gewährleistet, dass die Verbindung erfolgreich eingerichtet wurde.&lt;br /&gt;
&lt;br /&gt;
==Weitere Hinweise==&lt;br /&gt;
&lt;br /&gt;
Weder der Experte für DataSnap-Client-Module noch der Experte für DataSnap-REST-Client-Module kann aufgerufen werden, wenn nicht zuerst eine VCL-Formularanwendung erstellt wurde oder bereis in der IDE geöffnet ist. Wenn keine VCL-Formularanwendung in der IDE geladen ist, sind die beiden Einträge DataSnap-Client-Modul und DataSnap-REST-Client-Modul im Dialogfeld Objektgalerie ( &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere&#039;&#039;&#039;&amp;lt;/font&amp;gt;) deaktiviert, so dass Sie sie nicht auswählen können.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Anwendungen entwickeln|DataSnap-Anwendungen entwickeln]]&lt;br /&gt;
* [[Mehrschichtige Anwendungen erstellen - Index|Mehrschichtige Anwendungen erstellen - Index]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap_%C3%9Cberblick_und_Architektur&amp;diff=208307</id>
		<title>DataSnap Überblick und Architektur</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap_%C3%9Cberblick_und_Architektur&amp;diff=208307"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
DataSnap (früher bekannt als MIDAS) ist eine {{Delphi}}-Technologie für die Entwicklung von mehrschichtigen Anwendungen, vor allem von mehrschichtigen Datenbankanwendungen. {{CBuilder}} wird auch vollständig unterstützt. DataSnap ist nicht von MIDAS abhängig. DataSnap ermöglicht das Entwickeln von Client-Serveranwendungen, die über das Internet, das lokale Netzwerk oder den lokalen Host kommunizieren.&lt;br /&gt;
&lt;br /&gt;
Die wesentlichste Funktion von DataSnap ist die Möglichkeit, von Client-Anwendungen aus Methoden aufzurufen, die auf einem Server implementiert sind. DataSnap erzeugt automatisch das erforderliche Interface für den Client zur Kommunikation mit dem Server, der die Prototypen der Servermethoden enthält.&lt;br /&gt;
&lt;br /&gt;
[[Image:DataSnapCloud.png]]&lt;br /&gt;
&lt;br /&gt;
DataSnap ermöglicht es dem Client mithilfe einer abgesicherten Übertragung von JSON-Daten (JavaScript Object Notation) über TCP/IP oder HTTP, sicher mit dem Server zu kommunizieren. Die Sicherheit wird durch die Definition von Filtern an beiden Enden des Kommunikationskanals zur Verschlüsselung und Komprimierung weiter erhöht.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil der DataSnap-Technologie ist die Möglichkeit, alle Client-Anwendungen asynchron über auf dem Server vorgenommene Änderungen zu informieren, so dass Clients entsprechende Aktionen ausführen können. Das Callback erfordert nicht, dass Clients Servermethoden aufrufen.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für das Erstellen einer DataSnap-Anwendung finden Sie auf den folgenden Seiten: {{f|datasnap|&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden]]}}&lt;br /&gt;
* [[Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden]]{{f|dbexpress|&lt;br /&gt;
* [[Tutorial: Eine InterBase-Datenbank in einer Delphi- oder C++-Anwendung verwenden|Tutorial: Eine InterBase-Datenbank in einer {{Delphi}}- oder C++-Anwendung verwenden]] (mit einem DataSnap-Server)}}&lt;br /&gt;
&lt;br /&gt;
==DataSnap-Architektur==&lt;br /&gt;
&lt;br /&gt;
Die DataSnap-Technologie ermöglicht die Entwicklung von Client-Serveranwendungen, wobei entweder der Client oder der Server oder beide {{Delphi}}- oder {{CBuilder}}-Anwendungen ausführen. Die Kommunikation zwischen dem Client und dem Server kann über den lokalen Host, über das lokale Netzwerk oder über das Internet erfolgen. Sie legen den Verbindungstyp während des Entwurfs durch Setzen der Eigenschaft &#039;&#039;&#039;CommunicationProtocol&#039;&#039;&#039; einer TSQLConnection-Komponente auf TCP/IP oder HTTP fest.&lt;br /&gt;
&lt;br /&gt;
Die Client-Serverkommunikation wird durch den Austausch von JSON-Daten (JavaScript Object Notation) erreicht. {{f|webbroker|Die Serverantwort kann im HTML-Format unter Verwendung der WebBroker-Technologie gesendet werden.}}&lt;br /&gt;
&lt;br /&gt;
Wenn entweder auf dem Client oder dem Server eine Firewall ausgeführt wird, bietet DataSnap die Option, den Datentransfer durch einen Tunnel zu lenken, so dass die Firewall außer Kraft gesetzt wird, und die Kommunikation zwischen dem Client und dem Server stattfinden kann.&lt;br /&gt;
&lt;br /&gt;
DataSnap ermöglicht die Implementierung von Client und Server in derselben Anwendung. Dieser Ansatz ist auch als In-Process-Konnektivität bekannt.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Grundlagen der mehrschichtigen Datenbank-Anwendungen|Grundlagen der mehrschichtigen Datenbank-Anwendungen]]&lt;br /&gt;
* [[DataSnap-Konnektoren für mobile Geräte|DataSnap-Konnektoren für mobile Geräte]]{{f|datasnap|&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden]]}}&lt;br /&gt;
* [[Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden|Tutorial: Einen DataSnap-REST-Server mit einer Anwendung verwenden]]{{f|dbexpress|&lt;br /&gt;
* [[Tutorial: Eine InterBase-Datenbank in einer Delphi- oder C++-Anwendung verwenden|Tutorial: Eine InterBase-Datenbank in einer {{Delphi}}- oder C++-Anwendung verwenden]]}}{{f|webbroker|&lt;br /&gt;
* [[Tutorial: DataSnap-Anwendung mit einem ISAPI-DLL-Server|Tutorial: DataSnap-Anwendung mit einem ISAPI-DLL-Server]]}}{{f|vcl|&lt;br /&gt;
* [[Steuerelemente für DataSnap-Server|Steuerelemente für DataSnap-Server]]}}{{f|datasnap|&lt;br /&gt;
* [[Erstellen eines DataSnap-Servers|Erstellen eines DataSnap-Servers]]}}&lt;br /&gt;
* [[Filtern des DataSnap-Byte-Streams|Filtern des DataSnap-Byte-Streams]]{{f|datasnap|&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]}}{{f|webbroker|&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]}}&lt;br /&gt;
&lt;br /&gt;
{{f|radstudio|&lt;br /&gt;
&lt;br /&gt;
* [http://www.embarcadero.com/rad-in-action/delphi-labs Videos: {{Delphi}} Labs von Paweł Głowacki]&lt;br /&gt;
* [http://www.embarcadero-info.com/in_action/radstudio/db.html#xx Let the experts show you how...mit Bob Swart]&lt;br /&gt;
* [http://edn.embarcadero.com/article/41189 DataSnap XE: Multitier Database Application]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=5Cn0scEzYQ9nF REST and Thin Client Development with DataSnap]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=GzfVDuNpt3uzc Using JavaScript and {{Delphi}} REST Servers]&lt;br /&gt;
* [https://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=7S1VFt1153jb3 DataSnap: Features and Integration with User Types]&lt;br /&gt;
* [http://channel-e.embarcadero.com/index.php?option=com_jvideodirect&amp;amp;x=1&amp;amp;v=Qxne3uhuP1k1T DataSnap Server Application Types]&lt;br /&gt;
* [http://edn.embarcadero.com/article/41176 DataSnap Simple Calculator Service Example]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-Client-Module&amp;diff=208305</id>
		<title>Experte für DataSnap-Client-Module</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Experte_f%C3%BCr_DataSnap-Client-Module&amp;diff=208305"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Datei|Datei (Menü)}}&lt;br /&gt;
&amp;lt;ideTag id=&amp;quot;&amp;quot;&amp;gt;hcDDataSnapClientModule&amp;lt;/ideTag&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{Delphi}}-Projekte &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Datei &amp;amp;gt; Neu &amp;amp;gt; Weitere &amp;amp;gt; {{CBuilderUI}} &amp;amp;gt; DataSnap-Server &amp;amp;gt; DataSnap-Client-Modul&#039;&#039;&#039; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tipp:&#039;&#039;&#039; Der Experte für DataSnap-Client-Module ist nur verfügbar, nachdem Sie einen DataSnap-Server erstellt haben.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Experte für DataSnap-Client-Module==&lt;br /&gt;
&lt;br /&gt;
DataSnap-Client-Module ermöglichen von der IDE aus eine einfache Verbindung zu einem DataSnap-Server. Erstellen Sie zuerst eine neue VCL-Formularanwendung, und wählen Sie dann über das Menü &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Datei &amp;amp;gt; Neu&#039;&#039;&#039;&amp;lt;/font&amp;gt; den Eintrag &#039;&#039;&#039;DataSnap-Client-Modul&#039;&#039;&#039; aus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Wenn für den [[DataSnap-Server-Experte|DataSnap-Server]], mit dem dieser Client eine Verbindung herstellt, Filter angewendet werden (nämlich &#039;&#039;&#039;Verschlüsselung&#039;&#039;&#039;, &#039;&#039;&#039;Komprimierung&#039;&#039;&#039; oder beides), werden diese für den Client automatisch angewendet und ausgeführt.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Experte für DataSnap-Client-Module besteht aus vier Schritten, die auf den folgenden Bildern dargestellt sind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im ersten Schritt des Experten für DataSnap-Client-Module wählen Sie den Speicherort des DataSnap-Servers aus. Ein DataSnap-Server kann ein lokaler (auf &#039;&#039;&#039;localhost&#039;&#039;&#039; ausgeführt) oder ein Remote-Server (auf einen anderen Computer mit einer gültigen IP-Adresse ausgeführt) sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im zweiten Schritt des Experten wählen Sie den Typ des DataSnap-Servers für die aktuelle Verbindung aus. Sie legen eine Option fest, indem Sie auf das zugehörige Optionsfeld klicken. Um nähere Informationen zu einer bestimmten Option zu erhalten, klicken Sie auf die Option. Der Experte zeigt daraufhin einen Hinweis an. Beachten Sie bitte, dass Sie auf das blaue Ausrufezeichen klicken müssen, falls kein Hinweis angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im dritten Schritt des Experten für DataSnap-Client-Module wählen Sie das Verbindungsprotokoll aus. Beachten Sie bitte, dass der Server das ausgewählte Verbindungsprotokoll unterstützen muss.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:DSClientModule4.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;br Im vierten Schritt des Experten geben Sie den Kommunikations-Port, den Benutzernamen und das Passwort an. Diese Seite enthält auch die Schaltfläche &#039;&#039;&#039;Verbindung testen&#039;&#039;&#039;, mit der Sie überprüfen können, ob die Verbindung korrekt konfiguriert ist.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Anwendungen entwickeln|DataSnap-Anwendungen entwickeln]]&lt;br /&gt;
* [[Mehrschichtige Anwendungen erstellen - Index|Mehrschichtige Anwendungen erstellen - Index]]&lt;br /&gt;
* [[DataSnap-Server-Experte|DataSnap-Server-Experte]]&lt;br /&gt;
* [[Experte für DataSnap-REST-Anwendungen|Experte für DataSnap-REST-Anwendungen]]&lt;br /&gt;
* [[Experte für DataSnap WebBroker-Anwendungen|Experte für DataSnap WebBroker-Anwendungen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Client-Anwendung&amp;diff=208303</id>
		<title>DataSnap-Client-Anwendung</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DataSnap-Client-Anwendung&amp;diff=208303"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
==Themen==&lt;br /&gt;
&lt;br /&gt;
* [[Verbinden des Clients mit dem DataSnap-Server|Verbinden des Clients mit dem DataSnap-Server]]&lt;br /&gt;
* [[Filtern des DataSnap-Byte-Streams|Filtern des DataSnap-Byte-Streams]]&lt;br /&gt;
* [[HTTPS-Zertifikatsverifizierung|HTTPS-Zertifikatsverifizierung]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Tutorial: Einen DataSnap-Server mit einer Anwendung verwenden#Client-Anwendung erstellen|Tutorial: DataSnap-Server/Client]]&lt;br /&gt;
* [[Steuerelemente für DataSnap-Clients|Steuerelemente für DataSnap-Clients]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:DataSnap-Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Eigenschaften_der_Datenmenge&amp;diff=208301</id>
		<title>Eigenschaften der Datenmenge</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Eigenschaften_der_Datenmenge&amp;diff=208301"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken (Dialogfelder)}}&lt;br /&gt;
Use this dialog to examine the tables, columns, and other properties of a dataset.&lt;br /&gt;
&lt;br /&gt;
Im linken Bereich des Dialogfeldes wird die Datenmenge mit ihren Tabellen angezeigt. Markieren Sie im linken Bereich ein Objekt, um dessen Eigenschaften in einem schreibgeschützten Gitter im rechten Bereich anzuzeigen.[[en:Dataset Properties|Eigenschaften von en:Dataset]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daten-Explorer-Unterst%C3%BCtzung_f%C3%BCr_DataSnap&amp;diff=208299</id>
		<title>Daten-Explorer-Unterstützung für DataSnap</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Daten-Explorer-Unterst%C3%BCtzung_f%C3%BCr_DataSnap&amp;diff=208299"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{parent|DataSnap-Anwendungen entwickeln}}&lt;br /&gt;
&lt;br /&gt;
Die Daten-Explorer-Unterstützung für DataSnap wurde eingeführt, um Stored Procedures und Funktionen, Sichten und Tabellen einer laufenden [[DataSnap-Server-Anwendung|DataSnap-Server-Anwendung]] zu überwachen.&lt;br /&gt;
&lt;br /&gt;
==Verwendung und Beispiele==&lt;br /&gt;
&lt;br /&gt;
Um den Daten-Explorer mit DataSnap zu verwenden, müssen Sie zuerst eine DataSnap-Serveranwendung auf Ihrem lokalen Computer ausführen. Wenn die Serveranwendung ausgeführt wird, wechseln Sie in der {{Delphi}}-Benutzeroberfläche zur Registerkarte &#039;&#039;&#039;Daten-Explorer&#039;&#039;&#039;. Diese Registerkarte sollte in etwa wie folgende Abbildung aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im &#039;&#039;&#039;Daten-Explorer&#039;&#039;&#039; werden unter dem Abschnitt &#039;&#039;&#039;DATASNAP&#039;&#039;&#039; die folgenden Kategorien angezeigt: Tabellen, Sichten, Prozeduren, Funktionen, Synonyme. Für dieses Beispiel sind die &#039;&#039;&#039;Stored Procedures&#039;&#039;&#039; von DataSnap interessant. Wenn Sie auf den Eintrag &#039;&#039;&#039;Prozeduren&#039;&#039;&#039; klicken, wird eine Baumstruktur mit allen in der DataSnap-Serveranwendung enthaltenen Stored Procedures angezeigt. Angenommen, für eine Serveranwendung wird eine Stored Procedure namens &#039;&#039;&#039;TMyClass.Sum&#039;&#039;&#039; untersucht, die folgendermaßen definiert ist:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
  function TMyClassClient.Sum(A: Double; B: Double): Double;&lt;br /&gt;
  begin&lt;br /&gt;
    if FSumCommand = nil then&lt;br /&gt;
    begin&lt;br /&gt;
      FSumCommand := FDBXConnection.CreateCommand;&lt;br /&gt;
      FSumCommand.CommandType := TDBXCommandTypes.DSServerMethod;&lt;br /&gt;
      FSumCommand.Text := &#039;TMyClass.Sum&#039;;&lt;br /&gt;
      FSumCommand.Prepare;&lt;br /&gt;
    end;&lt;br /&gt;
    FSumCommand.Parameters[0].Value.SetDouble(A);&lt;br /&gt;
    FSumCommand.Parameters[1].Value.SetDouble(B);&lt;br /&gt;
    FSumCommand.ExecuteUpdate;&lt;br /&gt;
    Result := FSumCommand.Parameters[2].Value.GetDouble;&lt;br /&gt;
  end;&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wie Sie aus der Deklaration von &#039;&#039;&#039;TMyClassClient.Sum&#039;&#039;&#039; ersehen können, akzeptiert die Methode zwei &amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;Double&amp;lt;/span&amp;gt;-Werte und gibt deren Summe zurück. Die folgende Abbildung zeigt die Liste der Stored Procedures für eine Serveranwendung, die die oben beschriebene Methode enthält:&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer2.png]]&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Durch Klicken auf eine Stored Procedure wird dieser Eintrag erweitert und zeigt die &#039;&#039;Eingabe&#039;&#039;- und &#039;&#039;Ausgabe&#039;&#039;-Parameter an, in diesem Fall &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;B&#039;&#039;&#039; und &#039;&#039;&#039;ReturnValue&#039;&#039;&#039;. Wenn Sie auf den Namen einer Stored Procedure doppelklicken, wird ein &#039;&#039;&#039;Parameter&#039;&#039;&#039;-Fenster eingeblendet, in dem Sie die Parameter dieser Stored Procedure überwachen können.&lt;br /&gt;
&lt;br /&gt;
[[Image:DSDataExplorer3.png]]&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-Server-Anwendung|DataSnap-Server-Anwendung]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbanksicherheit&amp;diff=208297</id>
		<title>Datenbanksicherheit</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbanksicherheit&amp;diff=208297"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken verwenden}}&lt;br /&gt;
&lt;br /&gt;
Datenbanken enthalten häufig sensible Informationen. Verschiedene Datenbanken unterstützen Sicherheitsschemas für den Schutz dieser Information. Einige Datenbanken, wie beispielsweise Paradox und dBASE, bieten nur Sicherheit auf Tabellen- oder Feldebene. Wenn Benutzer versuchen, auf geschützte Tabellen zuzugreifen, müssen sie ein Passwort dafür angeben. Nachdem die Benutzer authentifiziert wurden, sehen sie nur die Felder (Spalten), für die sie eine Berechtigung besitzen.&lt;br /&gt;
&lt;br /&gt;
Die meisten SQL-Server fordern ein Passwort und einen Benutzernamen an, bevor sie überhaupt eine Nutzung des Datenbankservers zulassen. Nachdem sich der Benutzer bei der Datenbank angemeldet hat, legen der Benutzername und das Passwort fest, welche Tabellen zur Verfügung gestellt werden. Weitere Informationen für die Übergabe von Passwörtern an SQL-Server finden Sie unter [[Server-Anmeldungen steuern|Server-Anmeldungen steuern]].&lt;br /&gt;
&lt;br /&gt;
Beim Entwurf von Datenbankanmeldungen müssen Sie berücksichtigen, welchen Authentifizierungstyp Ihr Datenbankserver verwendet. Häufig werden Anwendungen so entworfen, dass sie die explizite Datenbankanmeldung vor den Benutzern verbergen, die sich nur bei der eigentlichen Anwendung anmelden müssen. Wenn Sie Ihre Benutzer nicht zur Eingabe eines Passworts auffordern wollen, müssen Sie entweder eine Datenbank verwenden, für die kein Passwort erforderlich ist, oder Sie müssen dem Server das Passwort und den Benutzernamen programmgesteuert übergeben. Falls das Passwort vom Programm aus übergeben wird, muss darauf geachtet werden, dass keine Sicherheitslücke entsteht, weil das Passwort aus der Anwendung gelesen werden könnte.&lt;br /&gt;
&lt;br /&gt;
Falls Sie von Ihren Benutzern fordern, dass diese ein Passwort eingeben, müssen Sie festlegen, wann das Passwort benötigt wird. Wenn Sie eine lokale Datenbank verwenden, aber vorhaben, später einen größeren SQL-Server einzurichten, sollten Sie das Passwort abfragen, sobald sich der Benutzer an der SQL-Datenbank anmeldet, und nicht erst, wenn er einzelne Tabellen öffnet.&lt;br /&gt;
&lt;br /&gt;
Falls für Ihre Anwendung mehrere Passwörter erforderlich sind, weil Sie sich an mehreren geschützten Systemen oder Datenbanken anmelden müssen, können Sie ein Hauptpasswort bereitstellen, das wiederum verwendet wird, um auf eine Tabelle mit den Passwörtern für die geschützten Systeme zuzugreifen. Die Anwendung stellt die Passwörter dann programmgesteuert bereit, ohne dass der Benutzer mehrere Passwörter eingeben muss.&lt;br /&gt;
&lt;br /&gt;
In mehrschichtigen Anwendungen können Sie aber auch ein ganz anderes Sicherheitsmodell verwenden. Sie können Protokolle wie beispielsweise HTTPs oder COM+ einsetzen, um den Zugriff auf mittlere Schichten zu steuern und den mittleren Schichten die Details für die Anmeldung bei Datenbankservern überlassen.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Datenbanktypen|Datenbanktypen]]&lt;br /&gt;
* [[Transaktionen|Transaktionen]]&lt;br /&gt;
* [[Das Data Dictionary|Das Data Dictionary]]&lt;br /&gt;
*[[Referentielle Integrität, Stored Procedures und Trigger|Referentielle Integrität, Stored Procedures und Trigger]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbank-Editor&amp;diff=208295</id>
		<title>Datenbank-Editor</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbank-Editor&amp;diff=208295"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbanken (Dialogfelder)}}&lt;br /&gt;
Vewrwenden Sie dieses Dialogfeld zum Einrichten der Verbindung zu einer Datenbank.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;Element&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Name&lt;br /&gt;
|&lt;br /&gt;
Der Name der Datenbank. Über diesen Namen wird die Datenbankkomponente im Anwendungscode angesprochen.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Aliasname&lt;br /&gt;
|&lt;br /&gt;
Der BDE-Alias der Datenbank. Wählen Sie einen Alias aus der Dropdown-Liste. Die Liste enthält alle Aliase, die derzeit bei der BDE registriert sind. Wenn Sie keine Verbindung zu einer als BDE-Alias registrierten Datenbank herstellen möchten, weisen Sie statt dessen der Eigenschaft Treiber einen Wert zu. Wenn Sie der Eigenschaft Alias einen Wert zuweisen, wird die Eigenschaft Driver gelöscht, da der Treibertyp im BDE-Alias integriert ist.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Treibername&lt;br /&gt;
|&lt;br /&gt;
Der Datenbanktyp, den die Datenbankkomponente repräsentiert. Wählen Sie in der Dropdown-Liste einen der Treibertypen STANDARD, ORACLE, SYBASE oder INTERBASE. Wenn der Datenbankserver als Alias bei der BDE registriert ist, können Sie statt dessen die Option Alias verwenden. Wenn Sie einen &#039;&#039;&#039;Treiber&#039;&#039;&#039; wählen, wird die Eigenschaft Alias gelöscht, damit keine Konflikte mit dem im Alias integrierten Treiber auftreten.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Parameter überschreibt&lt;br /&gt;
|&lt;br /&gt;
Die Werte aller Anmeldeparameter, die beim Herstellen der Verbindung benötigt werden. Die einzelnen Parameter hängen vom Typ der Datenbank ab. Eine Liste aller Parameter und ihrer Standardwerte erhalten Sie mit der Schaltfläche &#039;&#039;&#039;Vorgabe&#039;&#039;&#039;. In der Liste können Sie die Standardwerte ändern.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Vorgaben&lt;br /&gt;
|&lt;br /&gt;
Setzt die Parameter auf die Standardwerte für den Treibertyp.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Löschen&lt;br /&gt;
|&lt;br /&gt;
Entfernt alle überschriebenen Parameter.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Anmeldeaufforderung&lt;br /&gt;
|&lt;br /&gt;
Bewirkt, dass ein Anmeldedialogfeld automatisch eingeblendet wird, wenn der Benutzer eine Verbindung zu der Datenbank herstellt. Deaktivieren Sie die Option, wenn Sie den automatischen Anmeldedialog unterdrücken möchten. Die meisten Datenbankserver (mit Ausnahme der dateibasierten STANDARD-Typen) verlangen vom Benutzer bei der Anmeldung ein Kennwort. Wenn Sie bei diesen Servern auf den automatischen Anmeldedialog verzichten, muss die Anwendung den Benutzernamen und das Kennwort auf andere Weise bereitstellen. Dazu eignen sich beispielsweise hart codierte Parameter oder eine Ereignisbehandlungsroutine für OnLogin, in der den entsprechenden Parametern Werte zugewiesen werden.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Inaktive Verbindung halten&lt;br /&gt;
|&lt;br /&gt;
Legt fest, dass die Anwendung auch dann mit der Datenbank verbunden bleibt, wenn keine Datenmengen geöffnet sind. Bei Verbindungen zu externen Datenbankservern oder bei Anwendungen, die häufig Datenmengen öffnen und schließen, sollten Sie das Kontrollkästchen aktivieren. Sie verringern dadurch den Netzwerkverkehr, beschleunigen die Anwendung und umgehen die ständige Neuanmeldung beim Wiederherstellen der Verbindung. Wenn Sie das Kontrollkästchen deaktivieren, wird die Verbindung beendet, sobald die letzte Datenmenge geschlossen wird. Dieses Vorgehen spart Systemressourcen, hat jedoch den Nachteil, dass die Verbindung neu eingerichtet und initialisiert werden muss, wenn wieder eine Datenmenge geöffnet wird.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankarchitektur&amp;diff=208293</id>
		<title>Datenbankarchitektur</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenbankarchitektur&amp;diff=208293"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Datenbankanwendungen entwerfen - Index}}&lt;br /&gt;
&lt;br /&gt;
Datenbankanwendungen setzen sich aus Elementen der Benutzeroberfläche, Komponenten zur Anzeige von Datenbankinformationen (Datenmengen) und Komponenten, die diese miteinander und mit der Quelle der Datenbankinformation verbinden, zusammen. Die Anordnung dieser Bausteine bildet die Architektur einer Datenbankanwendung.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwar verschiedene Methoden, die Komponenten in einer Datenbankanwendung anzuordnen, aber die meisten folgen dem in der nachfolgenden Abbildung gezeigten allgemeinen Schema:&lt;br /&gt;
&lt;br /&gt;
[[Image:DBDARCH1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Das Formular für die Benutzeroberfläche==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie Ihre Benutzeroberfläche in einem eigenen Formular isoliert haben, können Sie ein [[Standard-Datenmodule erstellen und bearbeiten|Datenmodul]] verwenden, das die Komponenten aufnimmt, die Datenbankinformationen (Datenmengen) anzeigen, ebenso wie die Komponenten, die diese Datenmengen mit anderen Bereichen Ihrer Anwendung verbinden. Wie die Formulare für die Benutzeroberfläche können Sie Datenmodule in der Objektablage freigeben, sodass sie wiederverwendet oder von Anwendungen gemeinsam genutzt werden können.&lt;br /&gt;
&lt;br /&gt;
==Das Datenmodul==&lt;br /&gt;
&lt;br /&gt;
Das erste Element in dem Datenmodul ist eine [[Datensensitive Steuerelemente einer Datenmenge zuordnen|Datenquelle]]. Die Datenquelle agiert als Leitung zwischen der Benutzeroberfläche und einer Datenmenge, die Informationen aus einer Datenquelle repräsentiert. Mehrere datensensitive Steuerelemente auf einem Formular können eine einzelne Datenquelle gemeinsam nutzen. In diesem Fall wird die Anzeige in jedem Steuerelement synchronisiert, sodass, wenn der Benutzer die Datensätze durchsieht, der entsprechende Wert aus den Feldern für den aktuellen Datensatz in jedem Steuerelement angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
==Die Datenquelle==&lt;br /&gt;
&lt;br /&gt;
Die Seele Ihrer Datenbankanwendung ist die Datenmenge. Diese Komponente repräsentiert eine Gruppe von Datensätzen aus der zugrunde liegenden Datenbank. Bei diesen Datensätzen kann es sich um die Daten aus einer einzelnen Datenbanktabelle handeln, um eine Untermenge der Felder oder Datensätze in einer Tabelle oder um Informationen aus einer Verknüpfung von mehreren Tabellen in einer einzelnen Ansicht. Durch die Verwendung von Datenmengen wird Ihre Anwendungslogik vor Neustrukturierungen der physischen Tabellen in Ihren Datenbanken geschützt. Wenn sich die zugrunde liegende Datenbank ändert, müssen Sie vielleicht die Methode ändern, wie die Datenmengenkomponente die enthaltenen Daten abruft, aber Ihre restliche Anwendung kann unverändert weiterarbeiten. Weitere Informationen über allgemeine Eigenschaften und Methoden von Datenmengen finden Sie unter [[Datenmengen: Übersicht|Datenmengen]].&lt;br /&gt;
&lt;br /&gt;
==Die Datenmenge==&lt;br /&gt;
&lt;br /&gt;
Unterschiedliche Datenmengentypen verwenden unterschiedliche Mechanismen, um eine Verbindung zu den zugrunde liegenden Datenbankinformationen einzurichten. Diese unterschiedlichen Mechanismen wiederum bedingen die Verwendung unterschiedlicher Architekturen für die von Ihnen entwickelten Datenbankanwendungen. Es gibt vier grundlegende Mechanismen, um Verbindungen zu den Daten einzurichten:&lt;br /&gt;
&lt;br /&gt;
==Die Datenverbindung==&lt;br /&gt;
&lt;br /&gt;
Unterschiedliche Datenmengentypen verwenden unterschiedliche Mechanismen, um eine Verbindung zu den zugrunde liegenden Datenbankinformationen einzurichten. Diese unterschiedlichen Mechanismen wiederum bedingen die Verwendung unterschiedlicher Architekturen für die von Ihnen entwickelten Datenbankanwendungen. Es gibt vier grundlegende Mechanismen, um Verbindungen zu den Daten einzurichten:&lt;br /&gt;
&lt;br /&gt;
* [[Eine direkte Verbindung zu einem Datenbankserver einrichten|Direkte Verbindung zu einem Datenbankserver]]. Die meisten Datenmengen verwenden eine Ableitung von &#039;&#039;TCustomConnection&#039;&#039;, um die Verbindung zu einem Datenbankserver darzustellen.&lt;br /&gt;
* [[Eine dedizierte Datei auf der Festplatte verwenden|Verwendung einer dedizierten Datei auf der Festplatte]]. Client-Datenbanken unterstützen die Möglichkeit, mit einer dedizierten Datei auf der Festplatte zu arbeiten. Bei der Arbeit mit einer dedizierten Datei ist keine separate Verbindungskomponente erforderlich, weil die Client-Datenmenge selbst weiß, wie sie aus der Datei liest und in diese schreibt.&lt;br /&gt;
* [[Verbindungen zu anderen Datenmengen einrichten|Verbindungen zu anderen Datenmengen einrichten]]. Client-Datenmengen können mit Daten arbeiten, die von einer anderen Datenmenge bereitgestellt werden. Eine &#039;&#039;TDataSetProvider&#039;&#039;-Komponente dient als Mittler zwischen der Client-Datenmenge und ihrer Quelldatenmenge. Dieser Datenmengen-Provider kann sich im selben Datenmodul wie die Client- Datenmenge befinden, kann aber auch Teil eines Anwendungsservers sein, der auf einer anderen Maschine ausgeführt wird. Falls der Provider Teil eines Anwendungsservers ist, brauchen Sie auch eine spezielle Ableitung von &#039;&#039;TCustomConnection&#039;&#039;, um die Verbindung zum Anwendungsserver darzustellen.&lt;br /&gt;
* Daten aus einem RDS DataSpace-Objekt abrufen. ADO-Datenmengen können eine [[lib_de:Data.Win.ADODB.TRDSConnection|ADOdb.TRDSConnection]]-Komponente verwenden, um Daten in mehrschichtigen Datenbankanwendungen zu verpacken, die mithilfe von ADO-basierten Anwendungsservern erstellt wurden.&lt;br /&gt;
&lt;br /&gt;
Manchmal können alle diese Mechanismen [[Ansätze kombinieren|innerhalb einer einzigen Anwendung kombiniert]] werden.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Die Benutzeroberfläche gestalten|Die Benutzeroberfläche gestalten]]&lt;br /&gt;
* [[Die Borland Database Engine|Die Borland Database Engine]]&lt;br /&gt;
* [[Datenbanken verwenden|Datenbanken verwenden]]&lt;br /&gt;
*[[Datenbanktypen|Datenbanktypen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenhaltepunkt_ist_an_einer_Stack-Position_gesetzt&amp;diff=208291</id>
		<title>Datenhaltepunkt ist an einer Stack-Position gesetzt</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Datenhaltepunkt_ist_an_einer_Stack-Position_gesetzt&amp;diff=208291"/>
		<updated>2016-06-01T08:32:19Z</updated>

		<summary type="html">&lt;p&gt;Pial: Updated with Recovery tool. LOC-22808&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Fehlermeldungen - Index}}&lt;br /&gt;
Der Stack-Speicher ist unbeständig und ändert sich oft. Wenn ein Datenhaltepunkt an einer Adresse im Stack gesetzt wird, wird der Haltepunkt möglicherweise sehr oft getroffen, nämlich jedes Mal, wenn etwas in den Stack gelegt oder daraus entfernt wird.&lt;br /&gt;
&lt;br /&gt;
Sie können diesen Haltepunkt weiterhin setzen. Sie sollten sich aber darüber im Klaren sein, dass er so oft angelaufen werden könnte, dass die Anwendung nicht korrekt ausgeführt werden kann.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Überblick zum Debuggen|Überblick zum Debuggen]]&lt;br /&gt;
* [[Haltepunkte setzen und bearbeiten|Haltepunkte setzen und bearbeiten]][[en:Data Breakpoint is set on a stack location|en:Data Breakpoint is set on a stack location]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DENYPACKAGEUNIT-Direktive_(Delphi)&amp;diff=208264</id>
		<title>DENYPACKAGEUNIT-Direktive (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DENYPACKAGEUNIT-Direktive_(Delphi)&amp;diff=208264"/>
		<updated>2016-05-30T12:41:34Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der Delphi-Compiler-Direktiven - Index}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Option&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DENYPACKAGEUNIT ON} oder {$DENYPACKAGEUNIT OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Vorgabe&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DENYPACKAGEUNIT OFF}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bereich&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Lokal&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Direktive {$DENYPACKAGEUNIT ON} verhindert, dass die entsprechende Unit in ein Package eingefügt wird.&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DEFINE-Direktive_(Delphi)&amp;diff=208262</id>
		<title>DEFINE-Direktive (Delphi)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DEFINE-Direktive_(Delphi)&amp;diff=208262"/>
		<updated>2016-05-30T12:41:34Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Liste der Delphi-Compiler-Direktiven - Index}}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Typ&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Bedingte Compilierung&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Syntax&#039;&#039;&#039;&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
{$DEFINE Name}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Diese Direktive definiert ein bedingtes Symbol mit dem angegebenen Namen. Das Symbol ist bekannt, bis es in einer {$UNDEF Name}-Direktive auftaucht oder bis das aktuelle Modul vollständig compiliert ist. Die Direktive {$DEFINE Name} hat keine Auswirkungen, wenn Name bereits definiert ist.&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DDE-Info_(Dialogfeld)&amp;diff=208260</id>
		<title>DDE-Info (Dialogfeld)</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=DDE-Info_(Dialogfeld)&amp;diff=208260"/>
		<updated>2016-05-30T12:41:33Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Eigenschaftseditoren - Index}}&lt;br /&gt;
Use the DDE Info dialog box to specify, at design time, a DDE server application and a topic for a DDE conversation.&lt;br /&gt;
&lt;br /&gt;
So öffnen Sie das Dialogfeld DDE-Info:&lt;br /&gt;
&lt;br /&gt;
# Platzieren Sie eine DDEClientConv-Komponente im Formular.&lt;br /&gt;
# Markieren Sie diese Komponente, und&lt;br /&gt;
&lt;br /&gt;
*  klicken Sie entweder auf die Ellipsen-Schaltfläche in der Wertespalte der Eigenschaft [[lib_de:Vcl.DdeMan.TDdeClientConv.DdeService|TDDEClientConv.DdeService]] oder der Eigenschaft [[lib_de:Vcl.DdeMan.TDdeClientConv.DdeTopic|TDDEClientConv.DdeTopic]], oder&lt;br /&gt;
* doppelklicken Sie in der Wertespalte der Eigenschaft DdeService oder DdeTopic.&lt;br /&gt;
&lt;br /&gt;
==Optionen im Dialogfeld DDE-Info==&lt;br /&gt;
&lt;br /&gt;
Folgende Optionen stehen im Dialogfeld &#039;&#039;&#039;DDE-Info&#039;&#039;&#039; zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
==DdeService==&lt;br /&gt;
&lt;br /&gt;
Geben Sie die Server-Anwendung für die DDE-Konversation an. Die von Ihnen angegebene Anwendung wird in die Wertespalte der Eigenschaft DdeService eingetragen.&lt;br /&gt;
&lt;br /&gt;
Sie brauchen für die Server-Anwendung keine Dateinamenserweiterung anzugeben.&lt;br /&gt;
&lt;br /&gt;
Befindet sich das Verzeichnis, das Ihre Anwendung enthält, nicht in Ihrem Pfad, so müssen Sie den vollständigen Pfad angeben.&lt;br /&gt;
&lt;br /&gt;
==DdeTopic==&lt;br /&gt;
&lt;br /&gt;
Geben Sie hier das Thema für eine DDE-Konversation ein. Dies ist eine für den Server identifizierbare Dateneinheit, die den verknüpften Text enthält. Beispielsweise könnte das Thema der Dateiname eines Arbeitsblattes sein.&lt;br /&gt;
&lt;br /&gt;
Ist der Server eine VCL-Anwendung, so bildet der Name des Formulars, das die zu verknüpfenden Daten beinhaltet, das Thema.&lt;br /&gt;
&lt;br /&gt;
Befindet sich das Verzeichnis, das das Thema enthält, nicht in Ihrem Pfad, so müssen Sie den vollständigen Pfad angeben.&lt;br /&gt;
&lt;br /&gt;
==Verknüpfung einfügen==&lt;br /&gt;
&lt;br /&gt;
Klicken Sie auf &#039;&#039;&#039;Verknüpfung einfügen&#039;&#039;&#039;, um den Namen der Anwendung und den Dateinamen vom Inhalt der Zwischenablage in die Eingabefelder für die Anwendung bzw. die Datei einzufügen.&lt;br /&gt;
&lt;br /&gt;
Diese Schaltfläche ist nur aktiv, wenn die Zwischenablage Daten einer Anwendung enthält, die als DDE-Server dienen kann.[[en:DDE Info dialog box|en:DDE Info dialog box]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Zwischenspeicherung_von_DBX-Parametern&amp;diff=208258</id>
		<title>Zwischenspeicherung von DBX-Parametern</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Zwischenspeicherung_von_DBX-Parametern&amp;diff=208258"/>
		<updated>2016-05-30T12:41:32Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|DataSnap-REST}}&lt;br /&gt;
&lt;br /&gt;
Das Zwischenspeichern von DBX-Parametern in REST-Sitzungen ermöglicht die Ausführung einer Servermethode mit mehreren Ausgabe- und Rückgabeparametern, ohne dass die komplexen Typergebnisse, wie Tabellen, Objekte usw., in JSON formatiert zurückgegeben werden müssen. Dazu wurde die Zwischenspeicherung von komplexen Typen auf dem Server eingeführt. Des Weiteren wurde der Client mit einem URL (Uniform Resource Locator) für den einzelnen Zugriff auf die Rückgabetypen ausgestattet.&lt;br /&gt;
&lt;br /&gt;
==Details==&lt;br /&gt;
&lt;br /&gt;
Als Beispiel soll die folgende Methode auf dem Server dienen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;function GetImage(Name: String; out Stream: TStream): TStream;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachten Sie bitte, dass die Funktion &#039;&#039;&#039;GetImage&#039;&#039;&#039; zwei Streams zurückgibt. Vor der Einführung der Parameter-Zwischenspeicherung konnte diese Servermethode nur über einen URL des folgenden Typs ausgeführt werden: &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/rest/Classame/&#039;&#039;&#039;GetImage&#039;&#039;&#039;/Name.&lt;br /&gt;
&lt;br /&gt;
Dieser URL führt die Funktion korrekt aus, aber beide Streams werden als JSON-Byte-Arrays zurückgegeben. Wenn nur ein einzelner Stream zurückgegeben wird, könnten Sie das Ausgabeformat mit dem URL-Parameter &#039;&#039;&#039;json&#039;&#039;&#039; (true/false) steuern. Dieser Parameter wird jedoch ignoriert, wenn mehrere Ergebnisse zurückgegeben werden, um Datenverluste zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Jetzt können Sie dieselbe Funktion (z.B. &#039;&#039;&#039;GetImage&#039;&#039;&#039;) mit dem obigen URL ausführen, und dabei &#039;&#039;&#039;application/rest&#039;&#039;&#039; als den &#039;&#039;&#039;Accept&#039;&#039;&#039;-Header-Wert der Anforderung übergeben. Auf diese Weise erkennt der Server, dass Sie anhand des Zwischenspeichers der aktuellen Sitzung die komplexen Parameter behandeln möchten. Datenverlustprobleme werden so gelöst, aber der Anwender muss auf dem Server die Methode und zusätzlich jeden komplexen Parameter aufrufen, den er lesen möchte.&lt;br /&gt;
&lt;br /&gt;
==Ein Beispiel==&lt;br /&gt;
&lt;br /&gt;
Der folgende Quelltext ist ein Beispiel, das die Funktion &#039;&#039;&#039;GetImage&#039;&#039;&#039; ausführt. Es wird vorausgesetzt, dass beide Streams Bilder sind. Das Beispiel fügt die zwischengespeicherten Bilder in eine Webseite, die Bilder enthält, ein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  function PopulateImages()&lt;br /&gt;
  {&lt;br /&gt;
    var exec=new ServerFunctionExecutor(&amp;quot;ClassName&amp;quot;);&lt;br /&gt;
    var resultObj=exec.executeMethod(&amp;quot;GetImage&amp;quot;, null, &amp;quot;GET&amp;quot;, [&amp;quot;Key&amp;quot;], null, true, null, &amp;quot;application/rest&amp;quot;);&lt;br /&gt;
    // returns: {&amp;quot;result&amp;quot;:[&amp;quot;0/0/0&amp;quot;, &amp;quot;0/0/1&amp;quot;],&amp;quot;cacheId&amp;quot;:0,&amp;quot;cmdIndex&amp;quot;:0}&lt;br /&gt;
    document.getElementById(&amp;quot;image1&amp;quot;).src=exec.getCacheURL(resultObj.result[0],true);&lt;br /&gt;
    document.getElementById(&amp;quot;image2&amp;quot;).src=exec.getCacheURL(resultObj.result[1],true);&lt;br /&gt;
  }&lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der obige Quelltext geht von einigen Voraussetzungen bezüglich der Webseite aus, mit der er geladen wird, sollte aber die Grundidee veranschaulichen. Es gibt zwei Hauptänderungen bei &#039;&#039;ServerFunctionExecutor&#039;&#039;, die deutlich werden. Erstens: Die Funktion &#039;&#039;executeMethod&#039;&#039; übernimmt am Ende einen optionalen Parameter, der der im &#039;&#039;&#039;Accept&#039;&#039;&#039; -Header der Anforderung verwendete Wert wird. Zweitens: Die neue Funktion &#039;&#039;&#039;getCacheURL&#039;&#039;&#039;  wurde hinzugefügt. Sie gibt den vollständigen URL auf das zwischengespeicherte Objekt auf der Basis des Teil-URLs zurück, der im Ausführungsergebnis angegeben ist. Das als zweiter Parameter übergebene &#039;&#039;&#039;true&#039;&#039;&#039; bewirkt, dass die Sitzungs-ID dem zurückgegebenen URL hinzugefügt wird, so dass der URL eigenständig ohne &#039;&#039;ServerFunctionExecutor&#039;&#039; arbeiten kann.&lt;br /&gt;
&lt;br /&gt;
==Ergebnisformat==&lt;br /&gt;
&lt;br /&gt;
Wie oben bereits erwähnt, ist das zurückgegebene Ergebnis bei der Angabe von &#039;&#039;&#039;application/rest&#039;&#039;&#039; als &#039;&#039;&#039;Accept&#039;&#039;&#039;-Typ geringfügig unterschiedlich. Der Hauptunterschied besteht darin, dass das zurückgegebene Ergebnis für jeden komplexen Datentyp, wie Tabelle, Objekt, Stream usw., ein URL-Fragment anstatt des tatsächlichen Wertes ist. Das Fragment ist wie folgt zu verstehen:&lt;br /&gt;
&lt;br /&gt;
[&#039;&#039;&#039;Zwischenspeicher-Eintrags-ID&#039;&#039;&#039;]/[&#039;&#039;&#039;Befehlsindex&#039;&#039;&#039;]/[&#039;&#039;&#039;Parameterindex&#039;&#039;&#039;] &lt;br /&gt;
&lt;br /&gt;
wobei &#039;&#039;&#039;Zwischenspeicher-Eintrags-ID&#039;&#039;&#039; der eindeutige Bezeichner für den Methodenaufruf ist, den Sie ausführen. Beachten Sie aber, dass nur Ausführungen, die Ergebnisse im Zwischenspeicher speichern, eindeutige Bezeichner erhalten. &#039;&#039;&#039;Befehlsindex&#039;&#039;&#039; bezeichnet den Befehl der Ausführung, zu dem das Ergebnis gehört. Es ist nur ein Wert ungleich Null , wenn es sich um eine Stapelausführung handelt, die gleichzeitig mehrere Servermethoden betrifft. &#039;&#039;&#039;Parameterindex&#039;&#039;&#039; ist der Index des komplexen Parameters, der zurückgegeben werden soll. Dieser Index beginnt mit Null und basiert nur auf den komplexen Parametern des Befehls, nicht auf den anderen. &lt;br /&gt;
&lt;br /&gt;
Außer diesem Unterschied hat das Ergebnisobjekt auch zwei neue Eigenschaften, &#039;&#039;&#039;CacheId&#039;&#039;&#039; und &#039;&#039;&#039;CmdIndex&#039;&#039;&#039;. Diese Eigenschaften sind dieselben Werte wie die beiden ersten Teile des weiter oben erwähnten URL-Fragments und sind nur vorhanden, damit diese Werte ohne Zerlegen des URL-Fragments ermittelt werden können.&lt;br /&gt;
&lt;br /&gt;
==Interaktion mit dem Zwischenspeicher==&lt;br /&gt;
&lt;br /&gt;
Zwischenspeicherungs-URLs unterstützen die Anforderungstypen &#039;&#039;&#039;GET&#039;&#039;&#039; und &#039;&#039;&#039;DELETE&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wird ein &#039;&#039;&#039;GET&#039;&#039;&#039;-Befehl aufgerufen, sind die folgenden URLs verfügbar:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;URL&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Gibt ein JSON-Objekt zurück, das den Inhalt des Zwischenspeichers beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache/[&#039;&#039;&#039;Zwischenspeicherungs-ID&#039;&#039;&#039;]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Gibt ein JSON-Objekt zurück, das das Zwischenspeicherungsobjekt mit der angegebenen ID beschreibt.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache/[CacheID]/[&#039;&#039;&#039;Befehlsindex&#039;&#039;&#039;]/&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Gibt eine JSON-Repräsentation des angegebenen Befehls zurück.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache/[CacheId]/[CmdIndex]/[&#039;&#039;&#039;Parameterindex&#039;&#039;&#039;]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Gibt den tatsächlichen Parameter als JSON oder Stream zurück.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wird ein &#039;&#039;&#039;GET&#039;&#039;&#039;-Befehl aufgerufen, sind die folgenden URLs verfügbar:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;URL&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Löscht alle zwischengespeicherten Einträge.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;host:port/datasnap/cache/[&#039;&#039;&#039;Zwischenspeicherungs-ID&#039;&#039;&#039;]&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
Löscht die zwischengespeicherten Einträge und alle zugehörigen Befehle und/oder Parameter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Anforderungsfilter==&lt;br /&gt;
&lt;br /&gt;
Wenn Sie keinen Zwischenspeicher verwenden, arbeiten Anforderungsfilter wie üblich. Bei der Verwendung des Zwischenspeichers unterstützt eine &#039;&#039;&#039;GET&#039;&#039;&#039;-Anforderung, die einen bestimmten Parameter (z.B. CacheId/CmdIndex/ParameterIndex) angibt, dieselben Anforderungsfilter. Bei der Verwendung dieser Parameter muss aber Folgendes beachtet werden:&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Aufruf der Servermethode werden Anforderungsfilter für komplexe Typen ignoriert. Die Filter für diese Parameter werden nicht für komplexe Typen angewendet und werden nicht für die spätere Verwendung beim Ermitteln von Parametern aus dem Zwischenspeicher gespeichert.&lt;br /&gt;
&lt;br /&gt;
* Bei der Verwendung von Anforderungsfiltern für zwischengespeicherte Streams müssen Sie den Parameter &#039;&#039;&#039;json=false&#039;&#039;&#039; hinzufügen. Ansonsten werden die Filter ignoriert, und der Stream wird direkt als Inhalts-Stream der Antwort zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
* Der Parameterindex für die Filter ist der ursprüngliche Parameterindex, nicht der Index des komplexen Parameters im Zwischenspeicher. Mit anderen Worten: Der Index entspricht dem, was Sie angegeben hätten, wenn Sie den Filter in dem ursprünglichen Methodenaufruf verwendet hätten.&lt;br /&gt;
&lt;br /&gt;
==JS Proxy-Änderungen==&lt;br /&gt;
&lt;br /&gt;
Die erzeugte JS Proxy-Funktionen unterstützen jetzt einen weiteren optionalen Parameter nach Callback und Filter, der nicht in der Funktionssignatur erscheint. Dieser Parameter wird als String behandelt und direkt als Wert von &#039;&#039;&#039;Accept&#039;&#039;&#039; in dem Anforderungs-Header verwendet.&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[DataSnap-REST|DataSnap-REST]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Cwait&amp;diff=208256</id>
		<title>Cwait</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Cwait&amp;diff=208256"/>
		<updated>2016-05-30T12:41:31Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Process.h - Index}}&lt;br /&gt;
{{DISPLAYTITLE:cwait}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Header File&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
process.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kategorie&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Prozesssteuerungsroutinen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prototyp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;codeInline&amp;quot;&amp;gt;int cwait(int *statloc, int pid, int action);&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beschreibung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wartet auf die Beendigung eines untergeordneten Prozesses.&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;cwait&#039;&#039; wartet, bis ein untergeordneter Prozess endet. Der Parameter &#039;&#039;pid&#039;&#039; gibt die ID des untergeordneten Prozesses an, auf den gewartet werden soll. Ist &#039;&#039;statloc&#039;&#039; ungleich NULL, zeigt dieser Parameter auf die Position, an der &#039;&#039;cwait&#039;&#039; den Beendigungsstatus speichert.&lt;br /&gt;
&lt;br /&gt;
Ist &#039;&#039;pid&#039;&#039; gleich 0, wartet &#039;&#039;cwait&#039;&#039; auf die Beendigung der untergeordneten Prozesse. Andernfalls gibt &#039;&#039;pid&#039;&#039; die Prozess-ID des abzuwartenden Prozesses an; dieser Wert muss durch einen früheren Aufruf einer asynchronen &#039;&#039;spawn&#039;&#039;-Funktion ermittelt worden sein.&lt;br /&gt;
&lt;br /&gt;
Die von &#039;&#039;action&#039;&#039; akzeptierten Werte, WAIT_CHILD und WAIT_GRANDCHILD, werden vom Compiler ignoriert und nur aus Kompatibilitätsgründen unterstützt; &#039;&#039;cwait&#039;&#039; wartet nur auf den durch &#039;&#039;pid&#039;&#039; referenzierten Prozess. Diese beiden Werte sind in process.h definiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rückgabewert&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Kehrt &#039;&#039;cwait&#039;&#039; nach normaler Beendigung des untergeordneten Prozesses zurück, gibt die Funktion dessen Prozess-ID zurück.&lt;br /&gt;
&lt;br /&gt;
* Kehrt &#039;&#039;cwait&#039;&#039; nach einer nicht normalen Beendigung des untergeordneten Prozesses zurück, gibt die Funktion -1 an den übergeordneten Prozess zurück und setzt &#039;&#039;errno&#039;&#039; auf &#039;&#039;&#039;EINTR&#039;&#039;&#039; (der untergeordnete Prozess wurde nicht normal beendet).&lt;br /&gt;
&lt;br /&gt;
* Kehrt &#039;&#039;cwait&#039;&#039; zurück, ohne dass der untergeordnete Prozess abgeschlossen wurde, gibt die Funktion -1 zurück und setzt &#039;&#039;errno&#039;&#039; auf einen der folgenden Werte:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ECHILD&lt;br /&gt;
|&lt;br /&gt;
Kein untergeordneter Prozess vorhanden, oder Wert von &#039;&#039;pid&#039;&#039; ungültig&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
EINVAL&lt;br /&gt;
|&lt;br /&gt;
Ungültiger Wert für &#039;&#039;action&#039;&#039; angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 #include &amp;amp;lt;process.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt; int spawn_and_wait(wchar_t* program)&lt;br /&gt;
 {&lt;br /&gt;
   /* Anderen Prozess mit NOWAIT-Flag */&lt;br /&gt;
   int pid = _wspawnl(P_NOWAIT, program, NULL);&lt;br /&gt;
   int exitCode;&lt;br /&gt;
 &lt;br /&gt;
   /* Auf Fehler prüfen */&lt;br /&gt;
   if (pid == -1) return -1;&lt;br /&gt;
 &lt;br /&gt;
   /* Auf Anwendungsende warten */&lt;br /&gt;
   &#039;&#039;&#039;cwait&#039;&#039;&#039;(&amp;amp;amp;exitCode, pid, 0);&lt;br /&gt;
   return exitCode;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Portabilität&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; frame=&amp;quot;hsides&amp;quot; rules=&amp;quot;rows&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &#039;&#039;&#039;POSIX&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;Win32&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;ANSI C&#039;&#039;&#039;&lt;br /&gt;
! &#039;&#039;&#039;ANSI C++&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
+&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
| style=&amp;quot;text-align: left; vertical-align: top;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:C++-Referenz]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Text_ausschneiden,_kopieren_und_einf%C3%BCgen&amp;diff=208254</id>
		<title>Text ausschneiden, kopieren und einfügen</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Text_ausschneiden,_kopieren_und_einf%C3%BCgen&amp;diff=208254"/>
		<updated>2016-05-30T12:41:30Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Mit Steuerelementen arbeiten - Index}}&lt;br /&gt;
Wenn die Unit &#039;&#039;Clipbrd&#039;&#039; in eine Anwendung eingebunden wird, können Text, Grafiken und Objekte mithilfe der Zwischenablage ausgeschnitten, kopiert und eingefügt werden. Die Eingabefelder, die die Standardtextkomponenten kapseln, verfügen über integrierte Methoden für die Zusammenarbeit mit der Zwischenablage.&lt;br /&gt;
&lt;br /&gt;
Mit den Methoden &#039;&#039;CutToClipboard&#039;&#039;, &#039;&#039;CopyToClipboard&#039;&#039; und &#039;&#039;PasteFromClipboard&#039;&#039; können Sie im Quelltext auf die Zwischenablage zugreifen und Text ausschneiden, kopieren und einfügen.&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden den &#039;&#039;OnClick&#039;&#039;-Ereignissen der Menübefehle &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Bearbeiten &amp;amp;gt; Ausschneiden&#039;&#039;&#039;&amp;lt;/font&amp;gt;,&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt; &#039;&#039;&#039;Bearbeiten &amp;amp;gt; Kopieren&#039;&#039;&#039;&amp;lt;/font&amp;gt; und &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Bearbeiten &amp;amp;gt; Einfügen&#039;&#039;&#039;&amp;lt;/font&amp;gt; die entsprechenden Behandlungsroutinen zugeordnet.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
 procedure TEditForm.CutToClipboard(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   Editor.CutToClipboard;&lt;br /&gt;
 end;&lt;br /&gt;
 procedure TEditForm.CopyToClipboard(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   Editor.CopyToClipboard;&lt;br /&gt;
 end;&lt;br /&gt;
 procedure TEditForm.PasteFromClipboard(Sender: TObject);&lt;br /&gt;
 begin&lt;br /&gt;
   Editor.PasteFromClipboard;&lt;br /&gt;
 end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __fastcall TMainForm::EditCutClick(TObject* Sender) {&lt;br /&gt;
	RichEdit1-&amp;gt;CutToClipboard();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void __fastcall TMainForm::EditCopyClick(TObject* Sender) {&lt;br /&gt;
	RichEdit1-&amp;gt;CopyToClipboard();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void __fastcall TMainForm::EditPasteClick(TObject* Sender) {&lt;br /&gt;
	RichEdit1-&amp;gt;PasteFromClipboard();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Die Zwischenablage und Grafiken|Die Zwischenablage und Grafiken]]&lt;br /&gt;
* [[lib_de:Vcl.Clipbrd.TClipboard|Vcl.Clipbrd.TClipboard]]&lt;br /&gt;
*[[lib_de:Vcl.Clipbrd.TClipboard|Vcl.Clipbrd.TClipboard]]&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
&lt;br /&gt;
* [[Samp:CopyToClipboard (Delphi)|CopyToClipboard ({{Delphi}})]]&lt;br /&gt;
* [[Samp:CopyToClipboard (C++)|CopyToClipboard (C++)]]&lt;br /&gt;
* [[Samp:CutToClipboard (Delphi)|CutToClipboard ({{Delphi}})]]&lt;br /&gt;
* [[Samp:CutToClipboard (C++)|CutToClipboard (C++)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;br /&gt;
[[Category:C++]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Grafiken_in_die_Zwischenablage_ausschneiden&amp;diff=208252</id>
		<title>Grafiken in die Zwischenablage ausschneiden</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Grafiken_in_die_Zwischenablage_ausschneiden&amp;diff=208252"/>
		<updated>2016-05-30T12:41:28Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Die Zwischenablage und Grafiken}}&lt;br /&gt;
&lt;br /&gt;
Das Ausschneiden einer Grafik in die Zwischenablage entspricht dem Kopieren einer Grafik, wobei jedoch zusätzlich die ursprüngliche Grafik gelöscht wird.&lt;br /&gt;
&lt;br /&gt;
Um eine Grafik aus einem Bild in die Zwischenablage auszuschneiden, kopieren Sie sie zunächst in die Zwischenablage und löschen anschließend das Original.&lt;br /&gt;
&lt;br /&gt;
Normalerweise ist beim Ausschneiden nur die Frage zu klären, wie der gelöschte Teil im Originalbild zu behandeln ist. Das Ausfüllen des Bereichs durch die Farbe Weiß ist der übliche Ansatz. Der folgende Quelltext mit einer Behandlungsroutine für das Ereignis &#039;&#039;OnClick&#039;&#039; des Menüeintrags &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Bearbeiten &amp;amp;gt; Ausschneiden&#039;&#039;&#039;&amp;lt;/font&amp;gt; zeigt dieses Vorgehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;delphi&amp;quot;&amp;gt;&lt;br /&gt;
procedure TForm1.Cut1Click(Sender: TObject);&lt;br /&gt;
var&lt;br /&gt;
  ARect: TRect;&lt;br /&gt;
begin&lt;br /&gt;
  Copy1Click(Sender); { copy picture to clipboard }&lt;br /&gt;
  with Image.Canvas do&lt;br /&gt;
  begin&lt;br /&gt;
    CopyMode := cmWhiteness; { copy everything as white }&lt;br /&gt;
    ARect := Rect(0, 0, Image.Width, Image.Height); { get bitmap rectangle }&lt;br /&gt;
    CopyRect(ARect, Image.Canvas, ARect); { copy bitmap over itself }&lt;br /&gt;
    CopyMode := cmSrcCopy; { restore normal mode }&lt;br /&gt;
  end;&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void __fastcall TForm1::Cut1Click(TObject *Sender) {&lt;br /&gt;
	TRect ARect;&lt;br /&gt;
	Copy1Click(Sender); // copy picture to clipboard&lt;br /&gt;
	Image-&amp;gt;Canvas-&amp;gt;CopyMode = cmWhiteness; // copy everything as white&lt;br /&gt;
	ARect = Rect(0, 0, Image-&amp;gt;Width, Image-&amp;gt;Height); // get dimensions of image&lt;br /&gt;
	Image-&amp;gt;Canvas-&amp;gt;CopyRect(ARect, Image-&amp;gt;Canvas, ARect);&lt;br /&gt;
	// copy bitmap over self&lt;br /&gt;
	Image-&amp;gt;Canvas-&amp;gt;CopyMode = cmSrcCopy; // restore default mode&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
&lt;br /&gt;
* [[Grafiken in die Zwischenablage kopieren|Grafiken in die Zwischenablage kopieren]]&lt;br /&gt;
*[[Grafiken aus der Zwischenablage einfügen|Grafiken aus der Zwischenablage einfügen]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Windows-Entwicklerhandbuch]]&lt;br /&gt;
[[Category:Delphi]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
	<entry>
		<id>https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Ausschneiden&amp;diff=208250</id>
		<title>Ausschneiden</title>
		<link rel="alternate" type="text/html" href="https://docwiki.embarcadero.com/RADStudio/Alexandria/d/index.php?title=Ausschneiden&amp;diff=208250"/>
		<updated>2016-05-30T12:41:27Z</updated>

		<summary type="html">&lt;p&gt;Pial: 1 Version: Updated with Recovery tool. LOC-22793&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Parent|Menü Bearbeiten}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Bearbeiten &amp;amp;gt; Ausschneiden&#039;&#039;&#039;&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[[Formular-Designer|Formular-Designer]]&#039;&#039;&#039; | mit der rechten Maustaste auf eine Komponente klicken | &amp;lt;font color=&amp;quot;#598527&amp;quot;&amp;gt;&#039;&#039;&#039;Bearbeiten &amp;amp;gt; Ausschneiden&#039;&#039;&#039; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entfernt die aktuelle Auswahl und speichert sie in der Zwischenablage. &#039;&#039;&#039;Ausschneiden&#039;&#039;&#039; arbeitet im &#039;&#039;&#039;Quelltext-Editor&#039;&#039;&#039; mit Text und im &#039;&#039;&#039;Formular-Designer&#039;&#039;&#039; mit Komponenten.[[en:Cut|en:Cut]]&lt;br /&gt;
&lt;br /&gt;
[[Category:RAD Studio – Referenz]]&lt;br /&gt;
[[Category:AMMigrate]]&lt;/div&gt;</summary>
		<author><name>Pial</name></author>
	</entry>
</feed>