AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Änderungen in einer Datenbank erfassen
Thema durchsuchen
Ansicht
Themen-Optionen

Änderungen in einer Datenbank erfassen

Ein Thema von Delphi-Checker · begonnen am 12. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Delphi-Checker

Registriert seit: 4. Dez 2007
Ort: Im Osten
18 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 01:56
Datenbank: Sqlite • Version: 3 • Zugriff über: ZQuery
Hallo,

ich ersetze in einer Sqlite-Datenbank Einträge in einem Feld durch den SQL-Befehle
UPDATE Meine_TABLE SET Feld1 = REPLACE(Feld1,".",",") Wie kann ich feststellen welche Datensätze geändert wurden, und diese mit ihrer ID in einer Listbox anzeigen?
Ich habe gehört das so etwas mit Triggern zu machen ist, aber davon habe ich keine Ahnung.

- wie muss so ein Trigger aussehen?
- wie und wo wird ein Trigger gestartet?

Für jeden Hinweis bin ich dankbar!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 03:57
http://de.wikipedia.org/wiki/Datenbanktrigger
Trigger hör ich zum ersten Mal.

Ich gehe davon aus dass "REPLACE" eine von dir eigens geschrieben Prozedur ist. Du gehst bestimmt auf alle Datensätze von oben bis unten durch...

Wieso prüft du vorher nicht einfach, ob ein '.' vorhanden ist und schreibst es in deine Listbox. Beispiel:
Delphi-Quellcode:
Meine_Table.First;
while not(Meine_Table.eof) then
  begin
  if Pos('.',Meine_TableFeld1.AsString) > 0 then ListBox1.Items.Add(Meine_TableID.Asstring);
  //Aufruf der SQL-Anweisung "Update"...
  Meine_Table.Next;
  end;
...oder anders:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    i:integer;
    change:boolean;
begin
Meine_Table.First;
while not(Meine_Table.eof) do
  begin
  change := false;
  s := Meine_TableFeld1.AsString;
  for i := 0 to length(s) do
    begin
    if s[i] = '.then
      begin
      s[i] := ',';
      change := true;
      end;
    end;
  if change then ListBox.Items.Add(Meine_TableID.AsString)
  Meine_Table.Edit;
  Meine_TableFeld1.AsString := s;
  Meine_Table.Post;
  Meine_Table.Next;
  end;
end;
Maybe....
  Mit Zitat antworten Zitat
Delphi-Checker

Registriert seit: 4. Dez 2007
Ort: Im Osten
18 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 04:04
Die Sache mit dem Replace ist mir schon klar und funktioniert auch, ich will nur danach wissen
wie viele Datensätze geändert wurden.
Ich Habe vor der Aktion schon jede Menge Datensätze mit '.', dein Code würde mir alle anzeigen.
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 04:12
Hm... entweder steh ich auf dem Schlauch... einfach eine Variable dann einbauen die hochzählt, wenn Pos('.', Meine_TableFeld1.AsString) > 0 ist...

oder:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    i:integer;
    change:boolean;
    anzahl:integer;
begin
anzahl := 0;
Meine_Table.First;
while not(Meine_Table.eof) do
  begin
  change := false;
  s := Meine_TableFeld1.AsString;
  for i := 0 to length(s) do
    begin
    if s[i] = '.then
      begin
      s[i] := ',';
      change := true;
      end;
    end;
  if change then
    begin
    ListBox.Items.Add(Meine_TableID.AsString)
    inc(anzahl);
    end;
  Meine_Table.Edit;
  Meine_TableFeld1.AsString := s;
  Meine_Table.Post;
  Meine_Table.Next;
  end;
showmessage('Anzahl der geänderten Datensätze: '+inttostr(anzahl));
end;
Edit: Nicht über die Anzahl meiner Edits aufregen. Es ist schon viertel Fünf ^^
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 04:22
Wobei du letztendlich dann auch
ListBox.Items.Count abfragen könntest...

Wiss halt net wie du deine Datenbank ansprichst... ZEOSLib, etc....
  Mit Zitat antworten Zitat
Delphi-Checker

Registriert seit: 4. Dez 2007
Ort: Im Osten
18 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 05:45
Deine Vorschläge sind ok, aber es geht mir vorrangig darum
zu begreifen wie Trigger eingebunden und gestartet werden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 06:35
Trigger werden automatisch vom DBMS bei Auftreten von Ereignissen ausgeführt
Markus Kinzler
  Mit Zitat antworten Zitat
Delphi-Checker

Registriert seit: 4. Dez 2007
Ort: Im Osten
18 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 12:13
OK,
den Trigger schreibe ich mit einer Software (SQLMaestro) direkt in die Datenbank.
Wie rufe ich den Trigger aus der Anwendung heraus auf (er soll ja nicht immer laufen),
und kann ich damit auch eine meiner Proceduren starten?
Wie sollte der Trigger in meinem speziellen Fall aussehen?

Grüsse
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 12:16
Zitat:
Wie rufe ich den Trigger aus der Anwendung heraus auf (er soll ja nicht immer laufen),
Das ist aber das Wesen eines Triggers, er wird bei einem ereignis ausgelöst (getriggert)
Markus Kinzler
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Änderungen in einer Datenbank erfassen

  Alt 12. Mär 2008, 13:10
Trigger dienen dazu auf Ereignisse in der Datenbank (wie z.b. Inserts, Updates usw) wiederum eine beliebige Aktion in der Datenbank auszuführen (SP usw.).
Was Du (vielleicht) möchtest sind z.b. bei MS SQLSERVER die Notification Services. Keine Ahnung ab welcher Version diese verfügbar sind. Wir arbeiten mit MS SQL Server 2005.
Mit diesen kannst Du in Deiner Anwendung über Änderungen in der Datenbank informiert werden.
http://technet.microsoft.com/de-de/s.../bb331774.aspx
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:20 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