Autor Beitrag
Zaubär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: So 15.12.02 21:28 
Hi Leute,

hab wieder mal ein kleines Datenbankproblem.

In meinem Programm hab ich eine Paradox-Tabelle. Im Programm hab ich dann ein Query, eine Table und ein dbGrid. Das dbgrid ist mit dem Query verknüpft. Nun möchte ich auf Knopfdruck die im dbgrid markierte Zeile löschen. Doch leider funktioniert wird der falsche Eintrag gelöscht wenn ich table.delete benutze. Wie kann ich die markierte Zeile vom dbgrid mit der Table-Komponente synchronisieren??
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 15.12.02 21:38 
Hi,

erstmal ein Tip zum anfang, nimm entweder die Query-Kompo oder die Table-Kompo für abfragen in der Datenbank. Bei der Query-Kompo hast Du viel mehr Möglichkeiten und kommst einfacher zu Ziel, wenn Du SQL kannst, als bei der Table-Kompo. So ist zumindest meine Erfahrung.
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: So 15.12.02 22:34 
Das Problem, das ich habe ist, dass ich nur mit der Table Komponente an der Datenbank Änderungen machen kann. Ansonsten hätte ich die Table-Kompo schon lange verbannt.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 15.12.02 22:42 
Wieso, ich kann doch an jeder Datenbank Veränderungen mit SQL-Befehlen durchführen. Das Verstehe ich jetzt nicht ganz, erläutere mal näher.
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: So 15.12.02 22:48 
bis11 hat folgendes geschrieben:
Veränderungen mit SQL-Befehlen

Ehm...da ist bei mir offenbar ein Wissenslücke vorhanden und auch in meinen 2x1000 seitigen Delphi-Büchern.

Wie funktioniert denn z.B. eine Dateneintragung oder Löschung mittels SQL-Befehlen in eine Datenbank??

Ich kann nur sotieren und rechnen :(
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 15.12.02 22:54 
Schau mal auf diese Web-Seite, da sind alle SQL-Befehle erklärt :

home.t-online.de/hom...e/sqlhelp/index.html
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 16.12.02 12:42 
Hi Zaubär
unabhängig davon, wie du nun deine Änderungen in der Datenbank machst, musst du beim Löschen zuerst den Primärschlüssel des aktuellen Satzes der Query auslesen, dann die Tabelle auf diesen Satz positionieren (mit FindKey) und dann erst diesen Satz löschen.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Sa 21.12.02 16:07 
Tut mir leid aber ich komme nicht weiter :(

Könnt ihr mir für folgende Fälle ein Beispiel nennen:

1. Bisher habe ich Daten immer folgendermassen gelöscht.
ausblenden Quelltext
1:
table.delete					

Da ich meistens ein dbgrid verwende, wurde auch immer das richtige gelöscht.

2. Und so habe ich Daten eingetragen:
ausblenden Quelltext
1:
table.fieldbyname('Beispiel').AsString := 'TEST';					


Doch wie soll ich diese zwei Sachen nur mit einem Query machen. Hab's bisher nicht geschafft :(
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Sa 21.12.02 16:19 
Hi,

hast Du Dir die Seite angeschaut die ich gepostet habe ?

Um einen Datensatz einfügen zu können brauchst Du folgenden SQL-Befehl :

ausblenden Quelltext
1:
INSERT INTO Tabelle1 (Feld1,Feld2,Feld3,Feld4)  VALUES ('Testfeld1','TestFeld2','Testfeld3','Testfeld4');					


Um einen Datensatz zu löschen brauchst Du folgenden SQL-Befehl :

ausblenden Quelltext
1:
DELETE FROM Tabelle1 WHERE Feld1='Testfeld1';					
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Sa 21.12.02 17:18 
Der Lösch-Befehl ist aber sehr sehr umständlich, vor allem wenn man bedenkt, dass in mehreren Zeilen in einer Spalte das gleiche steht und ich will ja genau die richtige Zeile löschen....mal schauen ob ich's schaffe.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Sa 21.12.02 17:41 
Der Löschbefehl löscht nur den Datensatz, wo im Feld1 der String Testfeld1 drin steht.
Zaubär Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Sa 21.12.02 19:21 
Ja das hab ich mir auch gedacht, doch was passiert wenn TestFeld1 im Feld1 etwa 10mal vorkommt, aber nur einmal gelöscht werden darf??

Hab die Funktionen jetzt getestet, funktioniert bis jetzt prima. Allerdings hab ich noch eine kleine Frage, benutzt du eine Query-Kompo oder mehrere ?? Für jede Funktion eine?
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 22.12.02 12:47 
Eine Query-Kompo für eine Tabelle und über diese lasse ich dann alle SQL-Befehle laufen. Du kannst ja mit dem Befehl:
ausblenden Quelltext
1:
Query1.SQL.Clear;					

Diesen Befehl setzt Du immer vorher ab. Dann kannst Du mehrere Befehle über eine Query laufen lassen.