Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi einzelnes feld updaten (https://www.delphipraxis.net/40237-einzelnes-feld-updaten.html)

ElectricalFire 12. Feb 2005 22:26

Datenbank: mysql • Zugriff über: momentan noch mir script, ohne adapter

einzelnes feld updaten
 
hallo zusammen, hab folgendes problem:

ich moechte meinen DB server nicht unnoeting mit datentransfers belasten. somit will ich mit mysql nicht immer einen vollen "SELECT * FROM BLA" mahcen, sondern lediglich die geupdateten zahlen felder altualisieren.

wenn ich select eines einzelnen feldes, mit den where regeln mache, bekomme ich ja nur den einen wert, dabei moechte ich aber die ganze bestehende tabelle behalten und, wie gesagt, nur die neuen daten herunterladen.

wie kann ich sowas realisieren? unterstuetzt das mysql und/oder die dbgrid komponente von borland?

danke fuer eure hilfe!

Jelly 13. Feb 2005 01:00

Re: einzelnes feld updaten
 
Ich bin bischen verwirrt :gruebel:
Welche updateten Felder meinst du? Bei einem Select wird nix geupdated.

Jasocul 13. Feb 2005 10:37

Re: einzelnes feld updaten
 
Das wirst du nur hinbekommen, wenn du ohne datenbanksensitive Anzeige-Komponenten arbeitest. Ob das allerdings sinnvoll ist, kannst nur du beurteilen.
Ich möchte jedenfalls nicht anfangen, meine Grids per Hand zu befüllen :mrgreen:

Optimiere lieber deine SQL-Statements. Und dann gibt es noch die Refresh-Methode. Habe aber bisher nich geprüft, ob die schneller ist, als ein Close und Open auf dem DataSet.

ElectricalFire 13. Feb 2005 11:15

Re: einzelnes feld updaten
 
habs rausgekriegt:

es gibt in sql einen command, der update heisst (irrefuehrenderweise :))

mit dem command kann ich querries und auch subquieries starten.

syntax:

Delphi-Quellcode:
UPDATE JD11.BOOK SET TITLE = 'Leaning on a wall', AUTHOR = 'J.Killner', TIMES_LENT = 0, LENT_DATE = NULL, RETURNED_DATE = NULL WHERE ISBN = 989

oder

UPDATE JD11.SECTION SET BOOK_COUNT = (SELECT COUNT(*) FROM JD11.BOOK WHERE JD11.BOOK.SECTION_ID = JD11.SECTION.SECTION_ID) WHERE SECTION_ID IN (SELECT SECTION_ID FROM JD11.BOOK)

Robert_G 13. Feb 2005 11:59

Re: einzelnes feld updaten
 
Zitat:

Zitat von Jasocul
Das wirst du nur hinbekommen, wenn du ohne datenbanksensitive Anzeige-Komponenten arbeitest. Ob das allerdings sinnvoll ist, kannst nur du beurteilen.

Wäre sogar sehr sinnvoll. Schließlich taugt Delphis DB Aware -Zeugs nur für Quick'nDirty-Umhergeklicke.
Es ist damit einfach nicht möglich seine Daten in Objekte abzubilden und diese an Controls zu binden.

@ElectricalFire
Du machst mir Angst. Du kanntest UPDATE nicht? :shock:
Außerdem macht es keinen Sinn sowas fix in der DB abzulegen. Die Anzahl der referenzierten Detaildatensätze bekommst du über eine Abfrage. ;)
Man speichert generell nix in die DB, dass sich aus anderen gespeicherten Daten errechnen lässt.

ElectricalFire 13. Feb 2005 20:04

Re: einzelnes feld updaten
 
Robert:

Manchmal hab ich von mir selbst auch angst :)

nei ich kannte den command noch, ist 2 jahre her seit ich ihn gebraucht habe. dachte jedoch das teil heisst 'refresh'.
bin dann per zufall darauf gestossen.

den gezeigten code sind samles, brauche ich nicht, und sind nur als beispiele fuer andere mitleser da. man sieht einfach wie die subquieries aufgebaut sind. :warn: :spin2:

Jasocul 14. Feb 2005 07:20

Re: einzelnes feld updaten
 
Zitat:

Zitat von Robert_G
Wäre sogar sehr sinnvoll. Schließlich taugt Delphis DB Aware -Zeugs nur für Quick'nDirty-Umhergeklicke.
Es ist damit einfach nicht möglich seine Daten in Objekte abzubilden und diese an Controls zu binden.

Jetzt übertreibst du aber wirklich. Zumindest die DBGrids als Auswahl-Übrsicht ist brauchbar. Oder liest du das alles ind StringGrids ein? :mrgreen:
Und eine paar kleinere Tabellen ohne Abhängigkeiten kann man durchaus so verarbeiten.

@ElectricalFire:
Irgendwie hatte ich deine Frage völlig falsch verstanden. Ich dachte es ginge um ein Aktualisieren von dargestellten Feldinhalten in Edit-Feldern. Das du ein SQL-Update meintest, da wär ich nicht drauf gekommen. Da muss ich wohl ein Brett vorm Kopf gehabt haben. :wall:

ElectricalFire 14. Feb 2005 12:51

Re: einzelnes feld updaten
 
jasocul:

no problem. kann ja passieren.

@all:

weiss vielleicht jemand, wie man ein einzelnes feld, also eine zelle (cell) farbig gestaltet, also wenn ein darin enthaltener wert ueber 50 steigt, soll der hintergrund gruen werden, sonst rot... so in dem stiel..? kann man sowas ueberhaupt?

Jasocul 14. Feb 2005 13:13

Re: einzelnes feld updaten
 
Schau mal auf meiner Homepage unter Feld-Formatierer. Beachte aber den Hinweis-Text.
Selbst, wenn du die Komponente nicht installieren willst, kannst du im Source sehen, wie es funktioniert.

jensw_2000 14. Feb 2005 13:24

Re: einzelnes feld updaten
 
Das kannst du mit dem Eventhandler DrawColumnCell des dbgrids machen ...


Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var FieldValue:Integer;
begin

  //nicht ausführen wenn die Zelle den Focus hat oder selektiert ist
  if (gdSelected in State) or (gdFocused in State) then exit;

  // Beispiel(nur wenn die 2. Spalte des Grids gezeichnet wird)
  if column.Index=1 then
  begin
    try
     
      FieldValue := Round(column.Field.Value);
     
      // Schriftfarbe wählen
      dbgrid1.canvas.Font.Color:=clBlack;

      // Hintergrundfarbe abhängig vom Wert wählen
      if fieldValue > 50 then
        dbgrid1.canvas.Brush.Color:=clRed else
        dbgrid1.canvas.Brush.Color:=clGreen;

      // Zelle zeichnen
      dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

    except
     // kein Numerischer Wert
    end;
  end;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Seite 1 von 2  1 2      

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