AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Automatiach erstellte Syntax

Automatiach erstellte Syntax

Ein Thema von Delbor · begonnen am 5. Sep 2017 · letzter Beitrag vom 9. Sep 2017
Antwort Antwort
Seite 1 von 2  1 2   
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Automatiach erstellte Syntax

  Alt 7. Sep 2017, 20:35
Und irgendwo stand noch, dass man die Daten nicht mit Transkationen lädt.

Ich würde sagen, natürlich macht man das. Dafür sind sie da.
sqlite schwächelt da leider und verhält sich nicht so, wie das m.E. sein soll.
Ist aber ein anderes Thema. Kann man ja bei Bedarf separat klären.
Gruß, Jo
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 10:26
Hi zusammen

Nach längerm Suchen (inklusive überlesen...) hab ich da was interessantes gefunden:
Zitat:
Verwenden von mehreren SQLite-Datenbanken in einer Delphi-Anwendung

SQLite ermöglicht die Verwendung mehrerer Datenbanken in einer einzelnen Verbindung. Eine im Parameter Database angegebene DB ist die Hauptdatenbank. Um weitere Datenbanken hinzuzufügen, muss in der Delphi-Anwendung die ATTACH-Anweisung verwendet werden. Zum Beispiel:

Delphi-Quellcode:
 FDConnection1.ExecSQL('ATTACH ''c:\hr.sdb'' AS hr');
 FDConnection1.ExecSQL('ATTACH ''c:\cust.sdb'' AS cust');
 FDQuery1.Open('select * from "Orders" o ' +
   'left join hr."Employees" e on o.EmployeeID = e.EmployeeID ' +
   'left join cust."Customers" c on o.CustomerID = c.CustomerID');
Mit der von mir immer wieder erwähnten Connection-Komponente hab ich die Eingangs gezeigte DB erstellt. Laut diesem Artikel ist dies somit die 'Hauptdatenbank' in dieser Verbindunng. Alle weiteren Datenbanken müssen nun also mit ATTACH der Verbindung hinzugefügt werden.
Dies hatte ich ja erstmal so versucht:

DMLSQLite.FDSQLiteConnection.Params.Add('ATTACH "ContentMasterData.sdb" AS "ContentMasterData";');

Tigerlilly meinte dazu:
Zitat:
DMLSQLite.FDSQLiteConnection.Params nimmt NUR angaben zur Verbindung zur Datenbank auf. Ein Attach hat da nichts verloren.
Im Screenshot ist eine Datenbank mit .db angegeben, im Code .sqlite. Ist das ein Typo?
Hmm, Tigerlilly, in welchem Screenshot? Die eingeschwärzten Bildschirmschüsse zeigen ewinen Ausschnitt meiner Programmoberfläche. Das kann ein Tippfehler sein, ist aber wohl eher ein C&P-Fehler.

Gemäss dem oben gezeigten Codeschnipselfund werde ich jetzt erstmal zusehen, dass ich die ATTACH-Anweisung richtig hinkrieg.

Zitat von Jobo:
Zitat:
Ich schätze das Problem hier ist:
Das verwendete Tool generiert ein Script, Delphi SQL Componenten arbeiten aber meist Statement basiert.
Was ist denn der Unterschied zwischen einem Script und einem SQL-Statement? Nach meiner Interpretation erstmal wohl keiner; beide sind reiner Asccii-Text und werden interpretiert.
Wobei ein VB-Interpreter mit Select wohl erst mal nicht viel anfangen kann, eine SQL-Engine hingegen mit Dim hingegen genauso überfordert ist. Wobei der VB-Interpreter ein Select-Statement als String entgegennehmen und ihn an die SQL-Engine weiterreichen kann.

So, wie ich das sehe, enthält dieses Script nichts weiter als ein mehr oder weniger komplexes SQL-Statement, um damit mit der SQLite-Engine (SQLite3.dll) eine SQLite-DB zu erstellen.

Im Anhang zeigt ein jpeg die auf meinem System gefundenen sqlite.exe-Dateien, wobei mindestens eine davon eine Installationsdatei ist.


Gruss
Delbor
Angehängte Grafiken
Dateityp: jpg sqlite-exe-Suche.JPG (28,0 KB, 5x aufgerufen)
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von TigerLilly
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.241 Beiträge
 
Delphi 12 Athens
 
#3

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 10:42
Ja, genau. Das ATTACH muss aber mit ExecSQL ausgeführt werden, nicht in den Params.

Der Unterschied zwischen SQL Abweisung und SQL Script ist nur, dass eine SQL Anweisung eine einzelne Anweisung ist, das Script aber aus mehreren Anweisungen besteht. In der Regel ist das für die Delphi Komponenten kein Unterschied, weil der ganze Text an die Datenbank zur Abarbeitung geschickt wird.

Ich habe es jetzt nicht im Kopf, aber es kann vereinzelt ein Problem mit einem Script geben, wenn Delphi das SQL Statement parsen muss, um zB Parameter zu setzen oder ein Update-SQL zu generieren. Oder wenn Feldnamen extrahiert werden müssen. Aber das ist da ja nicht der FAll.

Ich persönlich mag es lieber, wenn die Statements einzeln ausgeführt werden, dann sehe ich besser, wo ein Fehler auftritt + ich kann auch nach jedem Statement dem Benutzer Feedback geben + den Fortschritt anzeigen.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 11:27
Der Unterschied zwischen SQL Abweisung und SQL Script ist nur, dass eine SQL Anweisung eine einzelne Anweisung ist, das Script aber aus mehreren Anweisungen besteht. In der Regel ist das für die Delphi Komponenten kein Unterschied, weil der ganze Text an die Datenbank zur Abarbeitung geschickt wird.
Der Unterschied scheint recht klein zu sein, einfach mehr von dem gleichen, aber die Konsequenzen sind leider so, dass die meisten Delphi SQL Komponenten keine Scripte verarbeiten. Das ist nicht mal nur bei Delphi so.

Und wenn man nun Delphi Componenten nutzt, die gewisse Datenbank-Features als Attribute anbieten, Transaktionseinstellungen, i18 settings usw, dann dürfte klar sein, dass es Probleme gibt, wenn man in einem Script oder auch nur einer einzelnen SQL Query widersprechende Anweisungen absetzt.
Gruß, Jo
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 12:18
Hi zusammen

Ich hab das mal so umgesetzt:
Delphi-Quellcode:
procedure TDMLSQLite.ContentmasterDBCreate;
  var SQLString: String;
begin
  try
    DMLSQLite.FDSQLiteConnection.Connected := false;
    FDSQLiteConnection.ExecSQL('ATTACH "M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite" AS ContentMasterData');
// DMLSQLite.FDSQLiteConnection.Params.Values['Database']:='"M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite"';

// War obige Zeile nicht auskommentiert: Unbekannte Datenbank. Danach liefen alle Createanweisungen durch. Beim nächsten ExecCSQL krachte es

    DMLSQLite.FDSQLiteConnection.Params.Values['FailIfMissing']:='False';
    DMLSQLite.FDSQLiteConnection.Params.Values['PRAGMA foreign_keys']:='ON';
    SQLiteTestMain.LBxPathlist.Items.AddStrings(FDSQLiteConnection.Params);
    DMLSQLite.FDSQLiteConnection.Connected := true;
    DMLSQLite.FDSQLiteConnection.GetInfoReport(SQLiteTestMain.Memo1.Lines);
    SQLString := '';
    SQLString := Createbilddescribetabelle;
    SQLString := SQLString + Createbilddescribetabelle_has_HtmlTabell;
    SQLString := SQLString + Createbildtabelle;
    SQLString := SQLString + CreateCSSTabelle;
    SQLString := SQLString + Creategalerietabelle;
    SQLString := SQLString + CreateHTMLTable;
    SQLString := SQLString + CreateJavascriptTable;
    SQLString := SQLString + Createkategorien_tabelle;
    SQLString := SQLString + Createkategorien_tabelle_has_bildDescribeTabelle;
    SQLString := SQLString + CreateMenueTabelle;
    SQLString := SQLString + CreateSubMenue2Table;
    SQLString := SQLString + CreateSubmenuetabelle;
    DMLSQLite.FDSQLiteConnection.ExecSQL(SQLString);
  except
    on E: EDatabaseError do
     ShowMessage('Exception raised with message' + E.Message);
  end;
end;
Wie gesagt: Beim 2. ExecSQL krachte es. Hmm, ich bin mir jetzt nicht mehr sicher, aber ich glaube mich an ein Tut zu erinnern, dass nach jeder Create-Anweisung ein ExecSQL durchführte. Der Grund könnte sein: Durch meine Aufteilung der einzelnen TableCreate-Statements und deren wiederzusammenführung in einem einzelnen SQLString hab ich wohl Leerzeichen zwischen den einzelnnen Anmweisungen entfernt, so dass da nun Konstrukte vorhanden sind wie
Zitat:
"...("CSS-Tabelle_idCSS");''CREATE TABLE "ContentMasterData..."
Und damit dürfte wohl jede SQL-Engine so ihre Probleme haben. Wobei auch das ein Grund sein könnte:
Zitat:
aber die Konsequenzen sind leider so, dass die meisten Delphi SQL Komponenten keine Scripte verarbeiten.
Gestern abend habe ich mir mal den Codevorschlag von nahpets (#24) runtergeladen. Ich werdes mal mit dem probieren.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 12:59
Bei Deinem 2. ExecSQL führst Du irgendwas aus, was aus mehreren Strings zusammengesetzt ist.

Da uns der Inhalt nicht bekannt ist, ist es annähernd unmöglich, hier irgendwie brauchbare Hilfestellung zu geben.

Normalerweise kann ExecSQL (wie oben schon angemerkt) nur ein Statement, also z. B. das Create von einer Tabelle, ein einzelnes Insert, ein einzelnes Update ..., aber keine Abfolge von mehr oder weniger Statments: Sprich: (höchstwahrscheinlich) keine Scripte.
Zitat:
"...("CSS-Tabelle_idCSS");''CREATE TABLE "ContentMasterData..."
Da ist mit vollkommen unklar, welches " jetzt am Anfang eines Statements, eines Wertes ... steht und welches am Ende. Wenn man sich das dann auch nochmal per Copy&Paste in 'nen Editor holt, erkennt man, dass dort einfach und doppelte Hochkommata schön gemischt sind.

Wenn die Anzahl der " beim Zusammenbau des SQLString aus einer Vielzahl weiterer Strings nicht so ganz zusammen passt, kann das zu diversen Fehlern führen, die man anhand der Fehlermeldung allein niemals finden und beheben kann.
Dann werden da mehrere String hintereinander gehängt, ist jeder ein vollständiges Statement, bei dem auch sichergestellt ist, dass es mit ; endet?

Meine Regel ist: Ein Statement ein ExecSQL (auch dann, wenn ich es anders lösen könnte). Dadurch weiß ich im Fehlerfalle immer, welches Statement den Fehler auslöste und muss nicht ggfls. tausende von Zeilen durchsuchen, um irgendwo einen Fehler zu finden.

Möchte man z. B. im Zusammenhang mit einer Firebird-Datenbank mehrere Statements als Script per ExecSQL ausführen, muss man es in dieser Art machen:
SQL-Code:
EXECUTE BLOCK AS BEGIN
  Statement_1;
...
  Statement_n;
END
Andernfalls erntet man bestenfalls nur 'ne Fehlermeldung.
Ob SQLite sowas unterstützt, weiß ich nicht.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 13:37
Hi zusammen

Der Abruch erfolgt gleich im erstem Statementt: (Hier das 2.)
Delphi-Quellcode:
function TDMLSQLite.Createkategorien_tabelle:String;
 var SQLString: String;
begin
  SQLString := 'CREATE TABLE "ContentMasterData"."kategorien_tabelle"('+
                            '"Kath_ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("Kath_ID">=0),'+
                            '"Kategorie" VARCHAR(120) NOT NULL);';
  Result := SQLString;
end;

function TDMLSQLite.Createbilddescribetabelle :String;
 var SQLString: String;
begin
  SQLString := 'CREATE TABLE ContentMasterData.bilddescribetabelle('+
                                '"BilddesribeID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("BilddesribeID">=0),'+
                                '"bildtabelle_idBild" INTEGER NOT NULL CHECK("bildtabelle_idBild">=0),'+
                                '"bildkatID" INTEGER NOT NULL CHECK("bildkatID">=0),'+
                                '"bildname" VARCHAR(45),"Dateipfad" VARCHAR(250),"bildbeschreibung" VARCHAR(800),'+
                                '"bildlegende" VARCHAR(300),"Author" VARCHAR(250),'+
                                'CONSTRAINT "fk_bilddescribetabelle_bildtabelle1" '+
                                  'FOREIGN KEY("bildtabelle_idBild")'+
                                  'REFERENCES "bildtabelle"("idBild"));'+
  'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON"bilddescribetabelle" ("bildtabelle_idBild");';
  Result := SQLString;
end;
Wie man hier sieht, habe ich im unteren Statement in der 1. Zeile die doppelten Anführungszeichen entfernt. Allerdings erst vor einemm zweiten Durchlauf. Die Fehlermeldung lautete zwar gleich, aber der Datenbankname endete diesmal mit einem Hochkomma.
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: unknown database ContentMasterData' aufgetreten.
---------------------------
Dann hab ich noch einen draufgesetzt und die Datenbankbezeichnung weggelassen. Das Statement jetzt:
Delphi-Quellcode:
  SQLString := 'CREATE TABLE "bilddescribetabelle"('+
                                '"BilddesribeID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("BilddesribeID">=0),'+
                                '"bildtabelle_idBild" INTEGER NOT NULL CHECK("bildtabelle_idBild">=0),'+
                                '"bildkatID" INTEGER NOT NULL CHECK("bildkatID">=0),'+
                                '"bildname" VARCHAR(45),"Dateipfad" VARCHAR(250),"bildbeschreibung" VARCHAR(800),'+
                                '"bildlegende" VARCHAR(300),"Author" VARCHAR(250),'+
                                'CONSTRAINT "fk_bilddescribetabelle_bildtabelle1" '+
                                  'FOREIGN KEY("bildtabelle_idBild")'+
                                  'REFERENCES "bildtabelle"("idBild"));'+
  'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON"bilddescribetabelle" ("bildtabelle_idBild");';
  Result := SQLString;
end;
Und die Fehlermeldung, als der Index erzeug werden sollte:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: table "bilddescribetabelle" already exists' aufgetreten.
---------------------------
Im Anhang zeigt ein Jpeg die im SQLExpert geöffnete Datenbank....

Ja, ich denk, dann werd' ich mal...


Gruss
Delbor
Angehängte Grafiken
Dateityp: jpg Anzeige SQLiteExpert 2.JPG (26,6 KB, 9x aufgerufen)
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 14:15
Je nach Datenbank muss ein Name eindeutig sein, es darf also keine Tabelle mit dem Namen bilddescribetabelle und gleichzeitig einen Index mit dem Namen bilddescribetabelle geben.
Auch dürfen die Namen, je nach Datenbank, nur eine bestimmte Länge haben (häufig 30 Zeichen).

Funktioniert statt:
'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON "bilddescribetabelle" ("bildtabelle_idBild");';

eventuell dieses hier:
'CREATE INDEX "ContentMasterData"."fk_bilddescribetabelle_bildtabelle1_idx" ON "bilddescribetabelle" ("bildtabelle_idBild");';

Muss in den Tabellennamen immer auch noch tabelle drinstehen?
Wenn nein, lass das weg, dann werden die Namen deutlich kürzer oder wenn Du bei Fremdschlüsseln ein fk_ davorstellst und beim Index ein _idx hinten anhängst, dann lass Tabellennamen mit t_ beginnen, Views können dann mal mit v_ beginnen ...

Sind die Unmengen von " bei SQLite tatsächlich bei der Angabe der Bezeichner erforderlich? Je nach Datenbank benötigt man das, wenn man die Bezeichner zwingend casesensitiv haben will, ohne die " wäre Groß-/Kleinschreibung dann egal. Aber das scheint nicht einheitlich zu sein.

Bei den Änderungen ist mir durchaus klar, dass sie dann nicht zur die Scripte betreffen, sondern sich auch durch die von Dir schon erstellte Applikation ziehen. Der Änderungsaufwand könnten dann auch einen unüberschaubaren Rattenschwanz nach sich ziehen. Da wären dann erstmal Aufwand und Nutzen abzuwägen.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 14:19
Hi nahpeds

Zitat:
"...("CSS-Tabelle_idCSS");''CREATE TABLE "ContentMasterData..."
Das dient eigentlich nur der Demonstration dessen, was im SQLString stehen muss, wenn ich ihn mit den Ergebnissen der einzelnen Funktionen zusammensetze.
Zitat:
Bei Deinem 2. ExecSQL führst Du irgendwas aus, was aus mehreren Strings zusammengesetzt ist.
Ja eben - und dies auch noch ohne Leerzeichen dazwischen.
Zitat:
Normalerweise kann ExecSQL (wie oben schon angemerkt) nur ein Statement, also z. B. das Create von einer Tabelle, ein einzelnes Insert, ein einzelnes Update ..., aber keine Abfolge von mehr oder weniger Statments: Sprich: (höchstwahrscheinlich) keine Scripte.
Selbst wenn ExecSQL mehr als ein Statement ausführen könnte - wie soll er die unterscheiden, wenn weder ein Leerzeichen oder sonst ein bestimmtes Steuerzeichen zwischen den einzelnen Statements steht? Der anfangs zitierte String ist das Ende des einen und der Beginn eines andern Statements.
Zitat:
Meine Regel ist: Ein Statement ein ExecSQL (auch dann, wenn ich es anders lösen könnte). Dadurch weiß ich im Fehlerfalle immer, welches Statement den Fehler auslöste und muss nicht ggfls. tausende von Zeilen durchsuchen, um irgendwo einen Fehler zu finden.
Und die ist mit Sicherheit goldrichtig. Denn wie gesagt: In meinem letzten Post habe ich die Prozeduren eingesetzt, die du gestern gepostet hast.
So, wies nun ausieht, muss, bzw. darf ich die Datenbank in den einzelnen Statements gar nicht mehr anführen. Und was das mit den diversen Hochkommas auf sich hat, wird sich zeigen. Die Dinger sind möglicherweise bei Namen, die Leerzeichen enthalten (ich glaub, das steht auch irgendwo hier) zwingen, bei Namen andreseits aber nicht störend.
'CREATE TABLE "bilddescribetabelle"('+ Das wurde anstandslos ausgeführt.


Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 8. Sep 2017 um 16:52 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Automatiach erstellte Syntax

  Alt 8. Sep 2017, 14:30
Wie man hier sieht, habe ich im unteren Statement in der 1. Zeile die doppelten Anführungszeichen entfernt. Allerdings erst vor einemm zweiten Durchlauf. Die Fehlermeldung lautete zwar gleich, aber der Datenbankname endete diesmal mit einem Hochkomma.

Dann hab ich noch einen draufgesetzt und die Datenbankbezeichnung weggelassen. Das Statement jetzt:
Delphi-Quellcode:
  SQLString := 'CREATE TABLE "bilddescribetabelle"('+
                                '"BilddesribeID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK("BilddesribeID">=0),'+
                                '"bildtabelle_idBild" INTEGER NOT NULL CHECK("bildtabelle_idBild">=0),'+
                                '"bildkatID" INTEGER NOT NULL CHECK("bildkatID">=0),'+
                                '"bildname" VARCHAR(45),"Dateipfad" VARCHAR(250),"bildbeschreibung" VARCHAR(800),'+
                                '"bildlegende" VARCHAR(300),"Author" VARCHAR(250),'+
                                'CONSTRAINT "fk_bilddescribetabelle_bildtabelle1" '+
                                  'FOREIGN KEY("bildtabelle_idBild")'+
                                  'REFERENCES "bildtabelle"("idBild"));'+
  'CREATE INDEX "ContentMasterData"."bilddescribetabelle.fk_bilddescribetabelle_bildtabelle1_idx" ON"bilddescribetabelle" ("bildtabelle_idBild");';
  Result := SQLString;
end;
Und die Fehlermeldung, als der Index erzeug werden sollte:
Zitat:
---------------------------
Im Projekt SQLiteTestProject.exe ist eine Exception der Klasse ESQLiteNativeException mit der Meldung '[FireDAC][Phys][SQLite] ERROR: table "bilddescribetabelle" already exists' aufgetreten.
---------------------------
Im Anhang zeigt ein Jpeg die im SQLExpert geöffnete Datenbank....

Ja, ich denk, dann werd' ich mal...
Was wirst Du nun ... ? Die Koffer packen? Wochenende beginnen?
Irgendwie gibst Du Dich doch sehr beratungsresistent.
Wenn Du Deine DB nicht abräumst vor einem 2. Versuch, muss es wohl knallen, beim erneuten Anlegen eines bereits bestehenden Objekts.
Wenn Du trotz mehrfacher Hinweise mehrere Statements in einen Aufruf packst, was soll man da noch raten?
2 Statements werden über ; getrennt.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

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

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

Gehe zu:

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