![]() |
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! |
Re: einzelnes feld updaten
Ich bin bischen verwirrt :gruebel:
Welche updateten Felder meinst du? Bei einem Select wird nix geupdated. |
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. |
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) |
Re: einzelnes feld updaten
Zitat:
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. |
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: |
Re: einzelnes feld updaten
Zitat:
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: |
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? |
Re: einzelnes feld updaten
Schau mal auf meiner
![]() Selbst, wenn du die Komponente nicht installieren willst, kannst du im Source sehen, wie es funktioniert. |
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; |
Re: einzelnes feld updaten
ich kann aber leider keinen eventhandler namens drawcolumncell finden.. kann es sein, dass es das teil fuer delphi.net 10 nicht gibt? nervig.
|
Re: einzelnes feld updaten
kann sein ...
schau dir mal die on___draw Events an, vielleicht findest du ja was Vergeichbares ... Sorry aber bei D2005 kann ich dir nicht weiterhelfen ... :hi: |
Re: einzelnes feld updaten
Sorry, aber "Neue Frage, neuer Thread"... ;)
|
Re: einzelnes feld updaten
Zitat:
|
Re: einzelnes feld updaten
da hast du recht, urspruenglich ging es ja auch um den UPDATE command von sql.
hat vielleicht doch einer eine ahnung? ich suche schon seid 2 stunden auf google herum. irgend welche stichwoerter vielleicht? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz