AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz löschen

Ein Thema von Budda · begonnen am 21. Nov 2003 · letzter Beitrag vom 26. Nov 2003
Antwort Antwort
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#1

Datensatz löschen

  Alt 21. Nov 2003, 13:57
Hallo,

hab schon das nächste Problem
Ich habe einen Kundentabelle. Zu jedem einzelnen Kunden können aber beispielsweise mehrere Geschenkdatensätze angelegt werden. Diese werden in eine andere Tabelle geschrieben und bekommen die eindeutige ID des Kundendatensatzes mit damit ich sie zuordnen kann. Wenn ich nun den Kundendatensatz lösche, sollten diese zugehörigen Datensätze aus der anderen tabelle auch gelöscht werden. Bisher lösch ich den Datensatz so:
Delphi-Quellcode:
ADOQuery1.Delete;
DBGrid1.Refresh;
So, da wird natürlich nur der Kundendatensatz gelöscht.
Auf die Geschenkdatensätze greife ich mit einem ADOQuery2 zu.
Wie muß ich das ganze erweitern damit das funktioniert?
Hab leider noch nicht so den Plan von Datenbanken.

Gruß
Budda
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Datensatz löschen

  Alt 21. Nov 2003, 14:02
Hai Budda,

ich würde das über einen SQL-Befehl machen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 ADOQuery2.Close;
 ADOQuery2.SQL.Text := 'DELETE FROM geschenktabelle WHERE kunden_id = ' + ADOQuery1.FieldByName ('kunden_id').AsString;
 ADOQuery2.ExecSQL;
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#3

Re: Datensatz löschen

  Alt 21. Nov 2003, 14:07
*vormkopfschlag*
So einfach hab ich gar nicht erst gedacht ich trottel ^^
Danke dir.

Gruss
Budda
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Datensatz löschen

  Alt 21. Nov 2003, 14:10
Aber dann zuerst Geschenkdatensätze und dann Daten aus der Kundentabelle löschen, und das ganze am besten in eine Transaktion einbetten, wenn's geht.
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#5

Re: Datensatz löschen

  Alt 24. Nov 2003, 09:52
Wenn ich das so mache bekomm ich einen Syntaxfehler bzw. Zugriffsverletzung.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#6

Re: Datensatz löschen

  Alt 24. Nov 2003, 11:23
1. Poste mal ein bischen source (Anhängen)
2. ganz wichtiger Aspekt beim Löschen der Geschenkdatensätze:
Delphi-Quellcode:
procedure DeletePresent(idDeleteKunde : Integer);
var TempQuery : TADOQuery;
    idLeuselator : Integer;
begin
  TempQuery := TADOQuery.Create(nil);
  TempQuery.Connection := ADOQuery1.Connection;
  TempQuery.SQL.Add('select idKunden from Kunden where name = ''Leuselator''');
  TempQuery.Open;
  idLeuselator := TempQuery.FieldByName('idKunden').AsInteger;
  TempQuery.Close;
  TempQuery.SQL.Clear;
  TempQuery.SQL.Add('update Geschenke set idKunden = '+IntToStr(idLeuselator));
  TempQuery.SQL.Add('where idKunden = '+IntToStr(idDeleteKunde));
  TempQuery.ExecSQL;
  TempQuery.Free
end;
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#7

Re: Datensatz löschen

  Alt 25. Nov 2003, 10:23
Moin,

hier der Code vom LöschButton:
Delphi-Quellcode:
ADOQuery2.Close;
ADOQuery2.SQL.Text := 'DELETE FROM t_lizenz WHERE KGGUID = ' + ADOQuery1.FieldByName 'GGUID').AsString;
ADOQuery2.ExecSQL;
ADOQuery1.Delete;
DBGrid1.Refresh;
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#8

Re: Datensatz löschen

  Alt 25. Nov 2003, 23:10
Code:
ADOQuery2.Close;
// ich vermute mal, dass das ID-Feld vom Typ Integer ist, dann würde ich es auch so abrufen
// ausserdem fehlt 'ne Klammer (vielleicht nur hier im posting?)
// das deleten würde ich auch lieber von hand machen (weis immer gern, was abgeht)
ADOQuery2.SQL.Text := 'DELETE FROM t_lizenz WHERE KGGUID = ' + intToStr(ADOQuery1.FieldByName[color=red]([/color]'GGUID').As[color=red]Integer[/color]);
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Text := 'DELETE FROM t_TabelleAusQuery1 WHERE GUID = intToStr(ADOQuery1.FieldByName('GGUID').AsInteger);
ADOQuery1.Close;
ADOQuery2.ExecSQL;
ADOQuery1.Open;
so sollte es funzen...
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#9

Re: Datensatz löschen

  Alt 26. Nov 2003, 08:46
Ne, die ID is nen GUID String
Delphi-Quellcode:
  ADOQuery2.SQL.Text := 'DELETE FROM t_lizenz WHERE KGGUID = ' + ADOQuery1.FieldByName('GGUID').AsString;
ADOQuery2.ExecSQL
Wenn ich das nur mit den beiden Zeilen da Probiere kommt der Fehler auch, also Hakts da wohl irgendwo ^^
  Mit Zitat antworten Zitat
Budda

Registriert seit: 3. Sep 2003
96 Beiträge
 
Delphi 7 Professional
 
#10

Re: Datensatz löschen

  Alt 26. Nov 2003, 13:58
So ich habs, so geht es:
Delphi-Quellcode:
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add ('delete from t_lizenz where KGGUID like' + QuotedStr ('%' + DBEdit27.Text + '%'));
  ADOQuery2.ExecSQL;
  ADOQuery1.Delete;
  DBGrid1.Refresh;
  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 09: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