Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Status abfragen und darauf reagieren (https://www.delphipraxis.net/63866-status-abfragen-und-darauf-reagieren.html)

Light 23. Feb 2006 20:11

Datenbank: MyBase • Zugriff über: TClientDataSet

Status abfragen und darauf reagieren
 
Hi Ihr,

Ich würde gerne wissen wie man den Status einer MyBase DB über TClientDataSet abfragt und vor allem welcher Status was bedutet.

- ich hab mich zwar in der Hilfe informiert aber irgendwie hat es in der Praxis nicht funkioniert!

Ich muss verhindern das eine Automatisch gestartete procedure nicht ausgeführt wird bis der duch den Benutzer gesteuerten neuen Eintrag in die DB fertig gestellt ist!

Weil wenn diese automatisch gestartete Procedure während des einfügens aufgerufen wird dann kommt mein gesammtes Programm zum stehen da man den Dialog der die neuen daten einfügen und speichert nicht mehr schließen kann!
:gruebel:


:dp: Ich hoffe ihr könnt mir helfen! :dp:

LG Stefan

So hab ich das bis jetzt gemacht:
Delphi-Quellcode:
if CDSData.Status <> dsInsert
then
  Begin
    //Führe den Code aus .............
  End;

gmc616 24. Feb 2006 16:44

Re: Status abfragen und darauf reagieren
 
Hallo Du,

Ich hab zwar von MyBase keine Ahnung aber "Automatisch gestartete Procedure" hört sich für mich an wie ein Trigger.
In Oracle z.B. lassen sich Trigger abschalten, allerdings nur als DBAdmin. Evtl. geht das mit MyBase auch.

Aber wieso speicherst du Nicht-Komplette Datensätze in die DB? *grübel*

Gruß
gmc

Light 2. Mär 2006 21:18

Re: Status abfragen und darauf reagieren
 
Hi gmc
Danke für dein Antwort!

ne is kein trigger - hab mich unklar ausgedrückt!

Also hier noch mal ganz ausführlich:
Mein Programm ist ein Wav(& und irgendwann auch mp3) abspieler
das programm spielt die titel von einer playliste aus -
jedes mal wenn ein titel angefangen wird zu spielen wird die gesammt länge dieses titels genommen in Min-sec umgewandelt und dann in dem Datensatz der zu dem Lied gehört eingetragen - so ist sichergestellt das immer die aktuelle länge des liedes in der Datenbank steht -
ein Datensatz sieht ungefähr so aus:
Titel - Genere - Länge - Pfad zur datei

So bis dahin ist das alles noch so einigermaßen functions tüchtig -
das problem trit auf wenn
1. Der Benutzer Neue Lieder in die Datenbank einfügen will - dies geht über einen Dialog
und 2. Ein Titel anfängt zu spielen
Folgender Fehler tritt auf:
wenn ein neues Lied 'angelegt' wird wird die DB in den Editier modus gesetz bzw. mit Append ein neuer Datensatz angehängt -
diesen soll dann ja der benuzer füllen-
wenn wärend dessen der Benutzer seine Daten eingibt jetz ein neues lied anfängt-
was durchaus häufig vorkommt -
dann wird dadurch die aktuallisierung der länge hervorgerufen
und die daten bank wird danach nicht wieder in den Editier modus zurück gesetzt sonder sie bleibt im nicht bearbeiten modus -

deshalb wollte ich "einfach" :? bevor ich die aktualisierung der Länge vornehme abfragen ob die Db schon im Editier modus ist - und falls sie das ist einfach die aktuallisierung weg fallen lassen
Nur das es bei mir leider nicht geklappt hat. wie im 1Beitrag schon gezeigt den Zustand abzufragen!

Ich hoffe ich hab mich klar ausgedrückt :gruebel:


Für ein bisschen hilfe wäre ich sehr dankbar!

LG Stefan

dataspider 2. Mär 2006 21:56

Re: Status abfragen und darauf reagieren
 
Hi,

da TClientDataSet von TDataSet abstammt, sollte der Standardcode funktionieren:
Delphi-Quellcode:
if not CDSDate.State in [dsEdit, dsInsert] then
// oder: if CDSDate.State <> dsInsert
begin
  //...
end;
Cu, Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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