AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL] Frage bezüglich Primärer Index
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Frage bezüglich Primärer Index

Ein Thema von NeoXan · begonnen am 5. Okt 2004 · letzter Beitrag vom 5. Okt 2004
Antwort Antwort
NeoXan
(Gast)

n/a Beiträge
 
#1

[SQL] Frage bezüglich Primärer Index

  Alt 5. Okt 2004, 13:28
Also ich habe ID als Primary Index gesetzt

Datenbank
ID Data Data
1 asdfgfgfg asasdd
2 asdfgfgfg asasdd
3 asdfgfgfg asasdd
4 asdfgfgfg asasdd

soah...wenn ich jetzt die Nummer 3 Lösche (DELETE) dann sieht das ja so aus

Datenbank
ID Data Data
1 asdfgfgfg asasdd
2 asdfgfgfg asasdd
4 asdfgfgfg asasdd

und wenn ich nun einen neuen Eintrag hinzufüge (INSERT) dann so...

Datenbank
ID Data Data
1 asdfgfgfg asasdd
2 asdfgfgfg asasdd
4 asdfgfgfg asasdd
5 asdfgfgfg asasdd




Nun ist mein Problem, dass meine Abfrage dann so ausschaut

FOR i=1 to ANZAHL AN ROWS
die Zeile mit ID = i wird verändert
inc(i)

im Klartext
Anzahl an Zeilen ist ja 4
1. Durchlauf
i=1
ID = 1 ==> gefunden
2. Durchlauf
i=2
ID = 2 ==> gefunden
3. Durchlauf
i=3
ID = 3 ==> nicht gefunden
4. Durchlauf
i=4
ID = 4 ==> gefunden


Das Problem ist also, dass die Zeile mit der ID 5 gar nicht angesprochen wird, gibt es da eine einfachere Methode alle Zeilen durchzugehen...

Vielleicht ein Array mit allen ID's drinn'...also
[1,2,4,5] und dann die Laufvariable für die ganze Länge des Arrays einsetzt etc. etc.

mfg
NeoXan
  Mit Zitat antworten Zitat
PRehders

Registriert seit: 31. Okt 2003
Ort: Hamburg
42 Beiträge
 
#2

Re: [SQL] Frage bezüglich Primärer Index

  Alt 5. Okt 2004, 13:46
Hallo NeoXan,

ich kann erstmal nicht so richtig sehen, was dein Problem mit SQL zu tun hat: Du fragst doch offensichtlich nicht über SQL ab, sondern über Kompos, oder?
Das Problem an deinem Code ist der Zugriff über die Gleichheitsbedingung mit der Zählvariable. Wenn sich die Datenmenge verändert (gerade bei Löschungen) darf man nicht so zugreifen. Die natürliche Lösung wäre es, die Tabelle über einen TTable zu öffnen (da du ja wohl alle Sätze haben möchtest) und dann per Next auf das jeweils nächste Element zuzugreifen, bis es keine weiteren Sätze gibt. Dies entspricht einem SELECT * FROM <table> und ist nicht vom Primärindex abhängig. Der wird für einen solchen Zugriff nicht benötigt.

Wenn du doch etwas anderes willst, solltest du schreiben, wie deine Umgebung aussieht:
Welche DB? Welche Zugriffsmethode (ADO, BDE)?

Bis dann

Peter
Peter Rehders
Man sollte niemanden ernst nehmen, der sich ernst nimmt.
  Mit Zitat antworten Zitat
schlock

Registriert seit: 3. Sep 2004
20 Beiträge
 
#3

Re: [SQL] Frage bezüglich Primärer Index

  Alt 5. Okt 2004, 13:50
In was für einer Struktur (Liste, Feld ...) speicherst Du deine Tabellenzeilen denn ??
Und warum löschst Du und suchst gleichzeitig innerhalb einer einzigen Schleife ??
  Mit Zitat antworten Zitat
NeoXan
(Gast)

n/a Beiträge
 
#4

Re: [SQL] Frage bezüglich Primärer Index

  Alt 5. Okt 2004, 14:01
"DELETE FROM termine WHERE id = '$id'"; "INSERT INTO termine ( titel , Date_Von , Date_Bis , `desc`) VALUES ('$titel', '$datevon', '$datebis', '$txt')";
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: [SQL] Frage bezüglich Primärer Index

  Alt 5. Okt 2004, 14:11
Zitat von NeoXan:
Vielleicht ein Array mit allen ID's drinn'...also
[1,2,4,5] und dann die Laufvariable für die ganze Länge des Arrays einsetzt etc. etc.
Den Fehler du machst, ist daß du deine Anzahl an Zeilen automatisch mit deiner höchsten ID gleichsetzt. Du musst schon deinen ganzen Set durchlaufen, und für jeden Record die ID extrahieren, also etwa so:

Delphi-Quellcode:
var
 ID : integer ;
begin
  qry.open ;
  with qry do begin
     while not eof do begin
       ID := FieldByName ('ID').AsInteger ;
       // -> Mit dieser ID kannst du dann was machen
       next ;
     end ;
  end ;
  close ;
end ;
Gruß,
  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 08:56 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