AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi PrimaryKey in einer Paradox-DB löschen und erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

PrimaryKey in einer Paradox-DB löschen und erstellen

Ein Thema von gnr82 · begonnen am 27. Nov 2006 · letzter Beitrag vom 29. Nov 2006
Antwort Antwort
Seite 1 von 3  1 23      
gnr82

Registriert seit: 8. Nov 2006
15 Beiträge
 
#1

PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 27. Nov 2006, 16:49
Datenbank: Paradox • Version: 5.0 • Zugriff über: SQL
Hallo,

ich habe folgendes Problem:

Ich benötige eine Tabelle (in einer Paradox-DB) die einen PrimaryKey besitz, gleichzeitig möchte ich die Struktur der Tabelle ändern können (Spalte hinzufügen, ändern, löschen, etc.). Derzeit ist das ändern allerdings nur möglich, wenn die Tabelle keinen Primärschlüssel besitzt.
Also war für mich jetzt der einfachste Weg den Primärschlüssel für die Zeit, in der ich Änderungen vornehme, herauszunehmen und danach wieder einzufügen. Leider funktioniert das nicht. Ich kann weder den Primärschlüssel entfernen, noch setzten wenn keiner da ist.

Anbei noch Auszüge aus dem Quellcode:
Delphi-Quellcode:
//
doADOquery(optionsarray[2],
           'alter table EXPORT add constraint PRIMARYKEY1 primary key (ID)',
           true,
           false);

doADOquery(optionsarray[2],
           'alter table EXPORT drop constraint PRIMARYKEY1',
           true,
           false);
Danke für eure Hülfe
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 27. Nov 2006, 17:29
Deine Tabelle heisst "EXPORT". Das könnte aber ein reserviertes Wort sein.
Versuche mal die Tabelle umzubenennen oder setze den Tabellennamen in Anführungszeichen.

Laut LocalSQL.hlp löscht man den Primärschlüssel so
DROP INDEX orders.PRIMARY Wenn alle Stricke reisen, musst du eine neue Tabelle mit der neuen Struktur erzeugen
und die Daten aus der Tabelle rüberkopieren.
Andreas
  Mit Zitat antworten Zitat
gnr82

Registriert seit: 8. Nov 2006
15 Beiträge
 
#3

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 27. Nov 2006, 20:45
Hallo nochmal.

Ich lösch jetzt doch die ganze tabelle und erstell diese über SQL-Anweisung neu. Das funktioniert soweit ganz gut, bis auf ... den PrimaryKey.

Fehlermeldung (Zitat):
Die Eigenschaften wird für externe Datenquellen oder für Datenbanken, die in einer früheren Version von Microsoft Jet erstellt wurden, nicht unterstützt.


Eine Idee woran das liegen kann?


Ich will doch nur eine Paradox-Datenbank mit einem PrimaryKey erstellen...

Könnt Ihr mir da nochmal helfen???

Danke
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 27. Nov 2006, 21:08
Wie sieht das Statement aus?
Markus Kinzler
  Mit Zitat antworten Zitat
gnr82

Registriert seit: 8. Nov 2006
15 Beiträge
 
#5

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 27. Nov 2006, 23:40
SQL-Script:

create table "test.db" (
id integer not null primary key,
test char(50))
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 28. Nov 2006, 06:57
Das DDL-Statement müßte so eigentlich funktionieren.
Funktioniert die Erzeugung ohne Primärschlüssel?
Funktioniert das spätere Hinzufügen des Selbigen als Constraint?
Markus Kinzler
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 28. Nov 2006, 07:23
Ich kenne nur den Weg über die BDE-Komponenten TTable. Vielleicht läßt sich das aber verwenden.
Delphi-Quellcode:
Uses
  DB, DBTables, SysUtils;

Function ChkANAMNESE(DName: String): Boolean;
  {Die Funktion ChkANAMNESE erzeugt die  Datei ANAMNESE.DB
  falls diese noch nicht existiert.
   Ist das Ergebnis True, so wurde die Tabelle neu erstellt.}

Function ChkIdxANAMNESE(DName: String): Boolean;
  {Die Funktion ChkIdxANAMNESE erzeugt die  Indizes der Datei ANAMNESE.DB
  falls diese noch nicht existieren.
   Ist das Ergebnis True, so wurden die Indizes neu erstellt.}


Implementation

Function ChkANAMNESE;
Begin
  Result:=False;
  If Not FileExists(DName) Then
  With TTable.Create(Nil) Do
  Begin
    TableName:=DName;
    With FieldDefs Do
    Begin
      Add('AnamneseID',TFieldType(14),0,False);
      Add('PR_ID',TFieldType(3),0,True);
      Add('Datum',TFieldType(9),0,True);
      Add('Parameter',TFieldType(1),30,False);
      Add('Ergebnis_ID',TFieldType(3),0,True);
      Add('LE_ID',TFieldType(3),0,True);
      Add('Text',TFieldType(16),25,False);
      Add('Bemerkungen',TFieldType(1),100,False);
      Add('LetzteVeraenderungUser',TFieldType(1),8,True);
      Add('LetzteVeraenderungZeit',TFieldType(11),0,True);
      Add('RecordStatus',TFieldType(3),0,False);
    End; {end with FieldDefs}
    CreateTable;
    Result:=True;
    Free;
    ChkIdxANAMNESE(DName);
  End; {end with TTable}
End; {end Function}

Function ChkIdxANAMNESE;
Begin
  Result:=False;
  With TTable.Create(Nil) do
  Begin
    TableName:=DName;
    Exclusive:=True;
    Open;
    IndexDefs.Clear;
    AddIndex('','AnamneseID', []+[ixPrimary]+[ixUnique]);
    AddIndex('PRIDDatum_Index','PR_ID;Datum', []+[ixCaseInsensitive]);
    Close;
    Free;
  End; {end with TTable}
End; {end Function}

End.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 28. Nov 2006, 07:25
Wenn schon BDE dann TQuery!
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

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

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 28. Nov 2006, 07:31
Guten Morgen,

hier wird mit LocalSQL gearbeitet, nicht mit SQL:

SQL-Code:
CREATE TABLE "test.db" (
  id INTEGER,
  test CHAR(50),
  PRIMARY KEY (id)
)
Gültigkeitsbeschränkungen werden von der BDE verwaltet und nicht über LocalSQL manipuliert.

Grüße vom marabu
  Mit Zitat antworten Zitat
Ines

Registriert seit: 22. Aug 2006
Ort: Augsburg
96 Beiträge
 
Delphi 2009 Enterprise
 
#10

Re: PrimaryKey in einer Paradox-DB löschen und erstellen

  Alt 28. Nov 2006, 07:56
Hallo, ich hatte vor kurzem ähnlichen Fehler (allerdings BDE).

Zitat von gnr82:
Ich will doch nur eine Paradox-Datenbank mit einem PrimaryKey erstellen...
Bei mir lag es daran, daß das Feld zum Erstellen des PrimaryKeys nicht das erste Feld in der Tabelle war. Nach dem Ändern der Tabellenstruktur hat dann das Setzen des PrimaryKeys funktioniert.

Viele Grüße
Ines
Ines
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 18:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz