Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi "" bei SQL bzw. Interbase (https://www.delphipraxis.net/793-bei-sql-bzw-interbase.html)

Hansa 7. Sep 2002 11:45


"" bei SQL bzw. Interbase
 
Hallo Leute !

weiß jemand vielleicht, was die "" bei CREATE TABLE zu bedeuten haben? Habe 2 tables angelegt. KG für Kundengruppe und kunde für Kunden. Wenn ich sage er solle KG anlegen kommt :

CREATE TABLE KG

bei kunde kommt aber:

CREATE TABLE "kunde"

Bei der table kunde kriege ich später Ärger bei den Triggern. Er sagt mir : Generator nicht definiert, obwohl er da ist. Die Indexstruktur bei kunde ist wesentlich komplizierter als bei KG. Ist da vielleicht noch ein Fehler drin ??? Finde nirgendwo eine Erklärung über die Bedeutung der "".

Gruß
Hansa

Gast 19. Sep 2002 11:53

Hallo Hansa,

zeige hier bitte die ganze SQL-Scripts für die Tabelle KUNDE bzw. für GENERATOR und TRIGGER

Gruß

Paul Jr.

MrSpock 19. Sep 2002 12:11

Hallo Hansa,

die Syntax

Code:
CREATE TABLE "kunde"
ist nicht korrekt. Der Name der Tabelle darf nicht in Anführungsstriche eingefasst werden. Je nach verwendeter Datenbank ist es aber trotzdem denkbar, dass man damit "durchkommt" (siehe unten). IB sollte hier einen Fehler melden.

Bei LocalSQL sind die Anführungsstriche erlaubt, da du dort im Namen dann auch Sonderzeichen wie z.B den Punkt verwenden kannst und damit die Endung des Dateinamens z.B. DB oder DBF erlaubt wird. Die BDE erkennt dann, dass der Name der Tabelle nur der Teil vor dem Punkt ist und der Teil danach nur den Typen (Paradox, dBase) angibt. Sie sind aber nicht notwendig. Standardmäßig wird eine Paradox Tabelle angelegt.

Lemmy 19. Sep 2002 13:38

Hallo MrSpock,
die Aussage:
Zitat:

Zitat von MrSpock
Code:
CREATE TABLE "kunde"
ist nicht korrekt.

ist nicht korrekt :D
IB 6.0.2 (meines Wissens nach alle 6.x) arbeiten grundsätzlich CaseINsensitive, d.h. Groß-Kleinschreibung kann gemischt werden. Wenn man allerdings Tabellennamen,Triggers,... in " setzt arbeitet man Casesensitive und zusätzlich kann man alles mögliche als Tabellennamen benutzen. Allerdings würde ich dieses nicht benutzen, da man sonst wie Hansa sehr schnell gegen eine Wand läuft. Vermutlich hast Du (Hansa) beim Trigger den kunde nicht in Anführungszeichen gesetzt...

Grüße
Lemmy

P.S.: Hi Hansa, ich bin wieder da... :witch:

Hansa 19. Sep 2002 17:05

Hei Leute,

das ist ja schon mal gut, wenn sich überhaupt jemand meldet. Mit PaulJr habe ich fast schon nicht mehr gerechnet :mrgreen: . Aber das hier muß ich mir erst mal heute abend angucken. Mein Netzwerk ist hinüber und nähert sich erst langsam wieder dem Leben. Wenn ich den erwische, der das war.:dance: (<-- so sieht der dann aus!!). War gottseidank selbst nicht da. Vor 10 Min. habe ich wenigstens Internet in Gang gesetzt. Das ist der erste Test.

Vorab SQL - Script :

Code:
/* Table: kunde8 */

SET SQL DIALECT 3;

SET NAMES ISO8859_1;



/******************************************************************************/
/*                                   Tables                                  */
/******************************************************************************/

CREATE TABLE "kunde8" (
    ID        "IDtyp" NOT NULL,
    ID_KGH    "IDtyp" NOT NULL,
    ID_KGU    "IDtyp" NOT NULL,
    "nr"      "IDtyp" NOT NULL,
    "Anrede"  STR25,
    "name"    STR25 NOT NULL,
    "strasse" STR25,
    "Ort"     STR25
);





/******************************************************************************/
/*                                Primary Keys                               */
/******************************************************************************/

ALTER TABLE "kunde8" ADD CONSTRAINT "PK_kunde8" PRIMARY KEY (ID);


/******************************************************************************/
/*                                Foreign Keys                               */
/******************************************************************************/

ALTER TABLE "kunde8" ADD CONSTRAINT "FK_kunde8" FOREIGN KEY (ID_KGH) REFERENCES KG8 (ID);


/******************************************************************************/
/*                                 Privileges                                */
/******************************************************************************/
Wo ich das hier sehe fällt mir auf, daß die Felder auch in "" stehen. Der Typ IDtyp ist von mir als Domain angelegt worden. Der steht auch in "". :nerd: Den Hauptschlüssel habe ich auf die ID von kunde8 gesetzt.
Der DS enthält auch noch einen Foreign-Key der aus der Kundengruppen-Datei stammt. Mit den Foreign-Keys habe ich auch noch Ärger. Irgendwas stimmt da noch nicht.

Gruß
Hansa

@Admin: Bei mir ist BBcode standardmäßig deaktiviert, muß es also von Hand einschalten, das war vorher anders. ?????? :D

Christian Seehase 19. Sep 2002 17:10

Moin Hansa,

und was steht in Deinem Profil unter BBCode immer aktivieren?

Lemmy 19. Sep 2002 18:16

Hi Hansa,

machst Du die DB neu oder werkelst Du an einer rum die schon existiert?? Wenn es sich um ne neue DB handelt, dann mach sie neu. Du mischt ja CaseInsensitive und Casesensitive, das wird Dir das Kreuz brechen, weil Du irgendwann nicht merh durchblickst....



Grüße
Lemmy

MrSpock 19. Sep 2002 18:46

Zitat:

Zitat von Lemmy
IB 6.0.2 (meines Wissens nach alle 6.x) arbeiten grundsätzlich CaseINsensitive, d.h. Groß-Kleinschreibung kann gemischt werden. Wenn man allerdings Tabellennamen,Triggers,... in " setzt arbeitet man Casesensitive und zusätzlich kann man alles mögliche als Tabellennamen benutzen.

Danke, das hab ich nicht gewusst. Muss mal schauen, ob ich das auch in der OH zu IB finde.

Hansa 19. Sep 2002 19:37

@Admin : Bei mir gibts kein "BBcode immer aktivieren"

Hallo Lemmy,


Zitat:

machst Du die DB neu oder werkelst Du an einer rum die schon existiert?? Wenn es sich um ne neue DB handelt, dann mach sie neu. Du mischt ja CaseInsensitive und Casesensitive, das wird Dir das Kreuz brechen, weil Du irgendwann nicht merh durchblickst....
Wie man schon am Script sieht, ist es eine Test-DB. Für den Kunden-DS brauche ich noch viele Felder mehr. Groß-Kleinschreibung? Könnte tatsächlich eine Fehlerquelle sein! Aber wirkt es sich auch ohne Unix aus ? Habe mehrmals gelesen, Interbase sei caseinsensitive, deshalb habe ich darauf nicht geachtet.

Vielleicht liegt es aber auch an meiner IBconsole (i.e. IBexpert) aus Flensburg. Zumindest Teile der Scripte wurden hiervon automatisch erzeugt. Nimmt er die Feldnamen, so wie sie von Hand eingegeben wurden, und baut diese in einen Trigger ein, ja dann gibt es vielleicht Ärger.

Werde deshalb die DB neu aufbauen und auf Groß/Kleinschreibung achten. Plausibel wäre es schon, daß die " bedeuten, auf CaseSensitive umzuschalten. Aber dann kommt das von IBexpert und nicht von mir. :cat:

Mit einem Trigger habe ich nämlich auch Ärger. Er beschwert sich ein Generator sei nicht da, obwohl er da ist (liegt vielleicht auch an CaseSensitive).

@PaulJr :

restliche Scripte :
Code:
CREATE GENERATOR GEN_KG8_ID;
SET GENERATOR GEN_KG8_ID TO 70


CREATE TRIGGER KG8_BI0 FOR KG8
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  new.ID = GEN_ID (gen_kg8_id,1);
end
Hier sieht man schön (alles Original), daß bei dem Generator alles groß und beim Trigger alles kleingeschrieben ist. Demnach würde eventuell CaseSensitive zuschlagen, warum auch immer. Holger Klemt (IBexpert) hat mir noch keine Antwort hierauf gegeben. Die Vermutung (Casesensitive / -insensitive) hatte ich nämlich auch. :mrgreen:

Gruß
Hansa

RomanK 19. Sep 2002 19:54

Allo ich hab in meinem Profile ein: "BBCode immer aktivieren:"


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf