AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Löschen aus der Ergebnismenge nicht aus der Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Löschen aus der Ergebnismenge nicht aus der Datenbank

Ein Thema von Polarwar · begonnen am 23. Jun 2008 · letzter Beitrag vom 24. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#11

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb

  Alt 23. Jun 2008, 19:00
Hallo...

ich arbeite zwar mit Zeos aber da haben die Querys eine property CachedUpdates.
- ist CachedUpdates = False werden Änderungen an der Query in die Datenbank übertragen.
- ist CachedUpdates = True können Änderungen an der Query vorgenommen werden ohne daß der Datenbank was passiert
...möchte man die Änderungen schreiben - ApplyUpdates ansonsten CancelUpdates.

vieleicht kennt das deine Query auch ?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb

  Alt 23. Jun 2008, 19:07
Mit Delphi-Bordmitteln;
1. mit ADO und LockType 'ltBatchOptimistic'. Dann nur kein 'ApplyUpdates' aufrufen.
2. mit einem TDataProvider und dem TClientDataset.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb

  Alt 23. Jun 2008, 20:07
Hallo,

ich hab nun nicht ganz so die Ahnung, aber wenn die Abfrage häufiger benötigt wird muss ich mich meinen Vorrednern anschließen,
die anregten, dass Tabellen Design zu überdenken.

Mir ist nicht ganz klar, wird die Lösung in dem DBMS über SQL benötigt oder wäre Delphi einsetzbar?

Bei letzerem könnte man 2 Funktionen unter Einsatz einer Query einsetzen, unter dem Ansatz, die nicht benötigten Datensätze vorab schon zu filtern:
1.) in der ersten Funktion werden deine Regeln festgelegt (Rückgabewert in meinem Beispiel = Integer)
2.)
Delphi-Quellcode:
 function TForm1.Feldwert(index: integer): string;
//diese Funktion wendet die vorherige "Regel-Funktion auf deine Tabellenspalte "xyz" an
begin
  if (UPPERCASE(Query1.Fields[index].fieldname) = 'XYZ')then
  begin
    Result := deine 1. Funktion(Query1.Fields[index].asinteger);//nur deine gültigen Datensätze
  end;
end;
3.) evtl. Datenausgabe:
Delphi-Quellcode:
...
var
  lsCell: string;
  liFldCnt, liDS: Integer;
begin
  liFldCnt := Query1.FieldCount;
  if (liFldCnt > 0) then
    while not (Query1.eof) do
    begin
      lsCell := Feldwert(0);
      for liDS := 1 to liFldCnt - 1 do
      begin
        lsCell := lsCell + ';' + Feldwert(liDS); //beispielhafte Ausgabe
      end;
    end;
end;

Ich hoffe ich habe das jetzt auch richtig verstanden...
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb

  Alt 24. Jun 2008, 09:14
nimm Temp Tables, dafür sind die perfekt:
SELECT ... INTO #erg FROM ... WHERE ... Der Vorteil gegenüber clientseitigen Lösungen: Du kannst die Ergebnistabelle mit anderen joinen, Änderungen serverseitig zurückschreiben u.ä. - und Du ersparst Dir bei großen Ergebnismengen den kompletten Transfer zum Client.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: SQL - Löschen aus der Ergebnismenge nicht aus der Datenb

  Alt 24. Jun 2008, 09:19
So wie ich das verstanden habe, will der Fragesteller Folgendes:
1. Tabelle laden
2. Die Daten in einem Datengitter anzeigen
3. Aus diesem Gitter (und nur hier) einzelne Datensätze entfernen
4. nur die Daten, die man im Grid sieht weiterverarbeiten, z.B. sequentiell drucken

Das mit SQL zu lösen ist doch dann suboptimal.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:49 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