AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank schreiben mit Fehlermeldung
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank schreiben mit Fehlermeldung

Ein Thema von Snyderburn · begonnen am 3. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#1

Datenbank schreiben mit Fehlermeldung

  Alt 3. Sep 2004, 12:06
Hi Leute,

ich habe ein kleines Problem beim Schreiben in meine Datenbank von Delphi aus. Es kommt da folgende Meldung:

"Operation wird nicht unterstützt - Tabelle ist nicht eindeutig identifiziert"

Lasse ich das Programm aber anschließend weiterlaufen und schaue mir die Datenbank an, dann wurde da trotzdem der gewünsche Datensatz eingetragen!

Hier sind ein paar Statements, die vorher ablaufen:

Zuerst wird noch ein Insert gemacht, damit ich in die Tabelle etwas reinschreiben kann.

Delphi-Quellcode:
procedure TDM1.T_InfoNewRecord(DataSet: TDataSet);
begin
  T_info.FieldByName('ID_info').AsInteger := -1;
end;
Delphi-Quellcode:
procedure TDM1.T_InfoBeforePost(DataSet: TDataSet);
begin
   // hier ID einsetzen, wenn noch nicht gesetzt (-1)!!!
  if ((T_Info.FieldByName('ID_info').AsInteger = -1) or (T_info.FieldByName('ID_info').Asstring = '')) then
  begin
    // bisher höchste ID+1 einsetzen !!!
    dm1.T_info.FieldByName('ID_ANSCHRIFT').asinteger := dm1.T_anschrift.fieldbyname('ID_ANSCHRIFT').AsInteger;
    t_info.FieldByName('ID_info').AsInteger := NextID('info', 'ID_info');
  end;
end;
mfg
Snyderburn
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Datenbank schreiben mit Fehlermeldung

  Alt 3. Sep 2004, 12:19
Es fehlen ein paar Info's:

- Weche Datenbanksystem (MS-SQL, MySQL, ...)?
- Welcher Zugriffsweg (ADO, BDE, ...)?
- Tabellenstruktur?
- Was ist T_info? TTable, TQuery, ...? SQL-Anweisung?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Datenbank schreiben mit Fehlermeldung

  Alt 3. Sep 2004, 12:57
Hier sind noch ein paar Informationen:

1. Es wird eine Interbase Firbird Datenbank genutzt.
2. Zugriff erfolgt über die BDE
3. Hier ist die komplette Tabellen-struktur:

Field Name Field Typ
ID_info Integer
ID_Anschrift Integer
IN_Beratervertrag Integer
IN_NDA Integer
IN_Werkvertrag Integer
IN_Dienstvertrag Integer
IN_Rahmenvertrag Integer
IN_Info BLOB

4. T_Info ist ein TTable. SQL-Anweisung benutzte ich nicht beim speichern.

Zitat von Bernhard Geyer:
Es fehlen ein paar Info's:

- Weche Datenbanksystem (MS-SQL, MySQL, ...)?
- Welcher Zugriffsweg (ADO, BDE, ...)?
- Tabellenstruktur?
- Was ist T_info? TTable, TQuery, ...? SQL-Anweisung?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Datenbank schreiben mit Fehlermeldung

  Alt 3. Sep 2004, 13:01
Firebird verwende ich nicht und BDE ist bei mir auch schon in dir Rundablage gewandert.

Welche Felder sind Primärschlüssel? Ich vermute BDE kann nicht bestimmen, welche Felder Primärschlüssel sind und damit auch nicht feststellen, ob der Datensatz überhaupt in die Datenbank gespeichert werden kann.

Frage: Wieso wird noch BDE verwendet. Für Interbase/Firebird gibt es diverse native Komponenten welche alle Nachteile der BDE (Installation nötig, veraltet, ...) vermeiden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Datenbank schreiben mit Fehlermeldung

  Alt 6. Sep 2004, 08:14
Kannst Du mir dann eine andere Komponenten sagen, womit ich die Verknüpfung zur DB hinbekomme? Solange und viel Zeit, auf der Arbeit, zum programmieren habe ich nicht, daher kenne ich mich nur mit BDE ein bißchen aus.

Für jeden guten Tipp bin ich dankbar.

mfg
Snyderburn
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Datenbank schreiben mit Fehlermeldung

  Alt 6. Sep 2004, 20:23
SQL-Direkt

Aber evtl. erbarmen sich noch ein paar andere User und geben dir weiter Links für native DB-Treiber.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#7

Re: Datenbank schreiben mit Fehlermeldung

  Alt 7. Sep 2004, 12:18
Hallo Snyderburn,

wenn's nichts kosten soll kannst du für Zugriff auf Firebird und Interbase einfach die IBX-Komponenten nehmen. Die sind bei Delphi ja schon dabei und reichen für den hausgebrauch eigentlich aus. Wenns n'bischen kosten darf kann ich dir FIBPlus empfehlen, die sind stabiler und bieten ein paar schöne Features wie Clientseitiges Sortieren und Filtern. Du findest Sie hier:FIBPlus.

Für diese beiden Komponenten gilt allerdings auch das du dich ein bißchen mit SQL und den Innereien von Firebird beschäftigen müßtest. Du mußt halt einige Sachen selbst machen die dir sonst die BDE abnimmt wie Transktionen usw., aber mit der BDE auf Interbase/Firebird zuzugreifen ist nun wirklich nicht das beste.
Gruß
UweR
  Mit Zitat antworten Zitat
shmia

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

Re: Datenbank schreiben mit Fehlermeldung

  Alt 7. Sep 2004, 12:35
Zitat von Snyderburn:
"Operation wird nicht unterstützt - Tabelle ist nicht eindeutig identifiziert"
Dann solltest du der Tabelle einen Primärschlüssel verpassen.
ALTER TABLE info ADD CONSTRAINT PK_info PRIMARY KEY (ID_info)
Zitat von Snyderburn:
Hier sind ein paar Statements, die vorher ablaufen:
Delphi-Quellcode:
// ganz weglassen, wird nicht gebraucht !
//procedure TDM1.T_InfoNewRecord(DataSet: TDataSet);
//begin
// T_info.FieldByName('ID_info').AsInteger := -1;
//end;
Delphi-Quellcode:
procedure TDM1.T_InfoBeforePost(DataSet: TDataSet);
begin
   // hier ID einsetzen, wenn noch nicht gesetzt !!!
  if T_Info.FieldByName('ID_info').IsNull then
  begin
    // bisher höchste ID+1 einsetzen !!!
    dm1.T_info.FieldByName('ID_ANSCHRIFT').asinteger := dm1.T_anschrift.fieldbyname('ID_ANSCHRIFT').AsInteger;
    t_info.FieldByName('ID_info').AsInteger := NextID('info', 'ID_info');
  end;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Datenbank schreiben mit Fehlermeldung

  Alt 7. Sep 2004, 13:52
Hallo Snyderburn,

ich empfehle dir die IBX Komponenten, die funktionieren prima. Ich habe noch nicht über die BDE auf Firebird zugegriffen, aber es sieht nach einem BDE Problem aus.

@shmia: Die Fehlermeldung sagt ja nicht über Indizierung sondern über Identifizierung der Tabelle, deshalb glaube ich nicht, dass es an einem fehlenden Index liegt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Snyderburn

Registriert seit: 19. Sep 2003
85 Beiträge
 
Delphi 2005 Architect
 
#10

Re: Datenbank schreiben mit Fehlermeldung

  Alt 9. Sep 2004, 13:46
Danke für die Infos!!! Den Fehler habe ich gefunden. Ich habe leider in der DB vergessen einen primärschlüssel zu setzten.

trotzdem vielen Dank für die Infos

mfg
Snyderburn
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

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

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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