AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Index-Diskriptor

Ein Thema von Privateer3000 · begonnen am 9. Jul 2002 · letzter Beitrag vom 10. Jul 2002
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#1

Index-Diskriptor

  Alt 9. Jul 2002, 19:18
HAllo Leuts,

ich hab wie immer eine normale Tabelle angelegt und will ihr natürlich einen Index geben.
Doch beim speicher sagt die DB-Oberfläche "Ungültiger Index-Diskriptor".
Was zum Henker soll das?
Hab doch schon mehrere Tabellen gemacht und auch diesmal nichts anderes.

Kann das jemand deuten?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.581 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 9. Jul 2002, 23:09
Kleine, aber wichtige Frage: Welche DB nutzt Du

Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#3
  Alt 9. Jul 2002, 23:47
yep, hast recht...
dbase..aber frag mich nicht welche...*gg*

ich glaube aber dbIV genommen zu haben, hlat wie immer
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
6.015 Beiträge
 
Delphi 2010 Professional
 
#4
  Alt 10. Jul 2002, 07:38
Hallo Privateer3000,

poste doch bitte mal die genauen Feldnamen, Typen inkl. Größen der ersten Felder der Tabelle und welches dieser Felder du als Schlüssel definieren willst.

Legst du die Tabelle über die Datenbankoberfläche an oder versuchst du die Tabelle aus einem Programm heraus zu erzeugen? Im letzteren Falle, poste doch bitte mal den entsprechenden Code.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#5
  Alt 10. Jul 2002, 08:53
Tabelle erzeuge ich mit der Delphi-Oberfläche(Tools/Datenb...)
Struktur ist total simple:

NAME C 254
Label1 N 20 0
.
.
.
.(bis 12)
LAbel12 N 20 0

mehr nicht.
Und das Feld NAME will ich indexieren, und zwar gewartet und eindeutig.

PS:
Die Tabelle funktioniert ja sogar, ich kann von meinem Programm etwas in die Tabelle posten, nur der Index geht halt nicht.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
6.015 Beiträge
 
Delphi 2010 Professional
 
#6
  Alt 10. Jul 2002, 09:26
Hallo Privateer3000,

das Name Feld ist zu groß, um als dBase Inex verwendet zu werden. Es funktioniert nur bis zu einer Länge von 100 Zeichen. Also musst du entweder die Feldgröße verändern (100 ist ja auch schon ein langer Name ) oder ein zusätzliches ID Feld anlegen, das als Index benutzt werden kann.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#7
  Alt 10. Jul 2002, 09:46
Du hast wie immer so recht, Schpocki

Danke

Noch ne Frage...gibt "Table1.post" einen Wert zurück?
Damit man auswerten kann ob der Post erfolgreich war...
Oder sollte man es prinzipiell der vorhanden try-except Kombi überlassen.
Und...wie kann ich prüfen ob der Name schon vorhanden ist?
Also, beim Programmstart soll der der Name aus einer inputbox mit der Tabelle verglichen werden ob dieser schon existiert. Das soll nicht verhindert werden, aber der User soll informiert werden, wenn er den NAmen wieder verwendet werden die alten Daten überschrieben.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#8
  Alt 10. Jul 2002, 10:54
Mit dem Vergleich ob der Name schon existiert hab ich folgendes angefangen:
Code:
with DataModule9 do
begin
DataModule9.Table2.Open;
if DataModule9.Table2.FindKey([meld]) then
showmessage('Name existiert schon!')
else
end;
Das quittiert das Programm mit einer Zugriffsverletzung.
Der Schlüssel 'meld' ist ein String aus einer inputbox.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
6.015 Beiträge
 
Delphi 2010 Professional
 
#9
  Alt 10. Jul 2002, 11:50
Hallo Privateer3000,

Post gibt keinen Wert zurück, sondern löst ggf. eine Exception aus, darum ist ein try ... except Block zu empfehlen.

Zu deinem Code: Wenn du mit "with" arbeitest, kannst du dir den Namen der entsprechenden Variablen beim Zugriff sparen, also

Code:
with DataModule9 do
begin
  Table2.Open;
  if Table2.FindKey([meld]) then
     showmessage('Name existiert schon!');
end;
Außerdem kann man die Eigenschaft Name des TTable Objekts ändern, dann wird der Code lesbarer.

Eine Zugriffsverletzung könnte ggf. darauf zurückführbar sein, dass Table2 nicht mit korrekt mit der Tabelle verbunden ist. Gibt es da eine genauere Fehlermeldung?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
FreePascal / Lazarus
 
#10
  Alt 10. Jul 2002, 12:52
"Zugriffsverletzung bei Adresse in Modul 'Test.EXE' ..."
Also keine spezielle MEldung.
Habe ich die Zeile mit Findkey richtig geschrieben?
In der OH steht:
function FindKey(const KeyValues: array of const): Boolean;
Also gehe ich davon aus der was in "meld" steht als Schlüssel benutz werden soll.
Liege ich da falsch?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  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:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf