AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Löschen von Datenbankeinträgen
Thema durchsuchen
Ansicht
Themen-Optionen

Löschen von Datenbankeinträgen

Ein Thema von Flash68 · begonnen am 27. Jan 2012 · letzter Beitrag vom 30. Jan 2012
Antwort Antwort
Seite 2 von 3     12 3      
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 11:15
Ja, das mag ja sein. Sobald Du aber auf andere Tabellen joinst, kann der Server aus Deinem Select Statement nicht mehr ermitteln, was die Basistabelle ist und was nur angereicherte Daten darstellen.

Ich hab nicht so ne Ahnung von MSSQL, was aber technisch notwendig wäre, um aus Serversicht trotz join die Pk Spalten des SQL Statements bestimmen zu können, wäre ein Select, dass in jedem fall alle PK Felder der Haupttabelle (hier scheinbar: Rechnereingabe, die Zwischentabelle) zurückliefert. Sowie keine weiteren Schlüsselfelder anderer Tabellen.

Eigentlich sieht Dein Statement unten so aus, als ob es dem entspricht.
Wenn der Server das nicht schluckt, musst Du wie beschrieben etwas mehr Aufwand treiben und ein separates Löschstatement einbauen.

Je nach Kompos, kann man das gleich als Delete oder Update Clause mitangeben, da hab ich aber aktuell keinen Überblick.
Gruß, Jo
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#12

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 11:48
Wenn es an den joins liegt, wäre halt die Frage wie ich die Berechnung mache ohne die joins.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 11:59
Nein, die Frage ist, wie Du auf Basis der Berechnung (also Deinem Dataset mit dem Berechnungsergebnis) eine Löschung durchführst.
Man kann natürlich sagen, das sind 2 vollkommen unterschiedliche Aufgaben.
1. Die Visualisierung einer Berechnung (eine Maske/ Form, ein Dataset)
2. Das Löschen einer Rechnerzuordnung, die nicht mehr berechnet werden soll (eine andere Maske, nur für Auf- und Abbau einer Rechnerzuordnung.
Gruß, Jo
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#14

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 12:13
in dieser speziellen Zuordnung ist ja in der Tabelle noch die Anzahl der Module drin mit der Gesamtspeicher berechnet wird, es soll einfach der komplette tabellen eintrag gelöscht werden.
Miniaturansicht angehängter Grafiken
rechnerspeicher-tab.jpg  
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#15

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 12:29
Das passt aber nicht zu dem, was Du von Deinem Dataset erzählst:
Das Dataset wird über folgende Select-Anweisung angebunden:

select RS.Rechner_ID, RS.Speicher_ID, S.Bezeichnung, RS.Anzahl, S.Größe, S.Größe*Rs.Anzahl As Gesamt from Rechnerspeicher RS, Speicher S where RS.Rechner_ID =:ID and RS. Speicher_ID = S.ID

Die Haupttabelle ist Rechner, Verknüpfungstabelle ist Rechnerspeicher und die Listtabelle ist Speicher.

und es passt nicht dazu, dass Du schreibst, die Zwischentabelle hätte nur 2 Spalten. (aber das ist hier auch egal)


a) Wenn du auf diesem Dataset (aus Zitat oben) ein Delete machen willst, musst Du eben etwas filigraner vorgehen.

b) Wenn Du auf der Tabelle aus dem Screenshot ein Delete machen willst, dann reicht ein simples Delete. (Hast Du ja selber schon bemerkt)

Wir sind also bei a) oder?
Gruß, Jo
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#16

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 12:43
die meisten Verknüpungstabellen die ich benutze habe 2 Spalten und ich dachte das ich das Problem allgemein habe, was sich dann später als Falsch herrausstellte.

sieht so aus also ob ich ein spezielles delete für diese Tabelle/dataset benötige.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#17

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 13:14
Ja, vermutlich gibt es ja auch irgendwo analog das spezielle Insert.
Gruß, Jo
  Mit Zitat antworten Zitat
Flash68

Registriert seit: 24. Apr 2006
102 Beiträge
 
Delphi XE2 Architect
 
#18

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 13:17
Das Insert mache ich über den DBGrid.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#19

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 13:26
Egal, die (Grid)Aussage ist nutzlos. Das ist nur der Visualisierungsteil.
Es geht immer um die Datenmenge, die unter dem Grid liegt:
DBGRID< Dataset < Query Statement

Wie gesagt, ich hab keine Ahnung, wie genial MSSQL Server bei der Auflösung solcher Statements bzw. der Bestimmung der Schlüsselinformationen arbeitet, aber egal ob insert, delete oder update, er hat immer das gleiche Problem. (Also könnte er sich auch in jedem Fall gleich Verhalten)

Wenn also ein Insert auf einem Dataset funktioniert, das Delete auf dem gleichen Dataset aber fehlschlägt, ist entweder die Servermechanik etwas schusselig oder Du machst einen Unterschied im Code, der aus Deinen bisherigen Äußerungen nicht hervorgeht (und Dir vielleicht auch nicht mal bewusst ist)
Gruß, Jo
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: Löschen von Datenbankeinträgen

  Alt 27. Jan 2012, 19:00
Hallo,

nimm eine 2. ADOQuery, lösche dort den Eintrag,
denn eine

DBGrid.DataSet.Close;
DBGrid.DataSet.Open;


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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:10 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