Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADS Datenbank meldet 'im Lesemodus' bei Query.edit (https://www.delphipraxis.net/61827-ads-datenbank-meldet-im-lesemodus-bei-query-edit.html)

joachimd 31. Jan 2006 08:44

Re: ADS Datenbank meldet 'im Lesemodus' bei Query.edit
 
Zitat:

Zitat von Smiley
Ich hänge ja noch am 'Set Exportiert =...' , das nimmt er schon nicht an, oder sollte die Fehlermeldung sich doch auf das Month() beziehen.

Wäre schön, wenn mir jemand mal helfend unter die Arme greifen könnte.

Ich will doch nur die Datensätze von einem Monat aus 'Belegdatum'(Date) und die dann in 'Exportiert' (TimeStamp) nichts drin stehen haben auf einen festen DateTime-Wert in 'Exportiert' setzen.

Delphi-Quellcode:
Query.SQL.Text:= '...Set exportiert=:irgendwas...';
Query.ParamByName('irgendwas').AsDateTime:=now();

Union 31. Jan 2006 09:55

Re: ADS Datenbank meldet 'im Lesemodus' bei Query.edit
 
Zitat:

Zitat von joachimd
Zitat:

Zitat von Smiley
DM.AdsQBelege.SQL.ADD('Update Belege Set Exportiert = ' +
QuotedStr(DateTimeToStr(Jetzt)) +
' Where Exportiert is null AND Month(Belegdatum)='+Mo);

Du verwendest hier eine Skalar-Funktion (month) und machst Dir somit einen Live-Cursor zunichte.

Die Lösung wäre hier:
Delphi-Quellcode:
DM.AdsQBelege.SQL.ADD('Update Belege Set Exportiert = ' + 
                       :ExportDatum + 
                       ' Where Exportiert is null AND Belegdatum Between :MonatsAnfang and :Monatsende');
DM.AdsQBelege.ParamByName('ExportDatum').AsDateTime := now;
DM.AdsQBelege.ParamByName('MonatsAnfang').BeginOfTheMonth(BelegDatum);
DM.AdsQBelege.ParamByName('ExportDatum').EndOfTheMonth(BelegDatum);

Smiley 31. Jan 2006 20:15

Re: ADS Datenbank meldet 'im Lesemodus' bei Query.edit
 
Ist ja toll der Vorschlag von Union und JoachimD.
Da werden erst Variable im SQL-String eingesetzt und danach erst gefüllt.

Delphi-Quellcode:
DM.AdsQBelege.ParamByName('MonatsAnfang').BeginOfTheMonth(BelegDatum);
DM.AdsQBelege.ParamByName('ExportDatum').EndOfTheMonth(BelegDatum);
Leider gibt es die Funktion BeginOfTheMonth() nicht, sollte das als Hinweis gedacht sein, dass ich mir die schreiben soll, oder gibt es sowas schon irgendwo ?
Hier und über google konnte ich nichts finden, es sei denn man programmiert in PHP.

Jetzt kommen wir langsam weiter, nur noch ein kleiner Schritt.

Union 31. Jan 2006 20:25

Re: ADS Datenbank meldet 'im Lesemodus' bei Query.edit
 
Sorry, es muss natürlich heissen
Delphi-Quellcode:
DM.AdsQBelege.ParamByName('MonatsAnfang').StartOfTheMonth(BelegDatum);
DM.AdsQBelege.ParamByName('ExportDatum').EndOfTheMonth(BelegDatum);
Ich war wohl durch die Pascal-Syntax etwas begin-geschädigt ;) Das sind ganz normale Delphi-Funktionen, zu finden in DateUtils und OH.

Smiley 31. Jan 2006 21:17

Re: ADS Datenbank meldet 'im Lesemodus' bei Query.edit
 
Jetzt wirds schon besser, wieder einen Schritt weiter.

Nun noch ein paar Flüchtigkeitsfehler beseitigen und dann geht es schon.

Delphi-Quellcode:
   
    AktMonat:=DM.AdsQBelege.FieldByName('BelegDatum').AsDate;
    .
    .  
    .
    StartMonat:=StartOfTheMonth(AktMonat);
    EndMonat:=EndOfTheMonth(AktMonat);

    DM.AdsQBelege.SQL.ADD('Update Belege Set Exportiert = :ExportDatum' +
                       ' Where Exportiert is null AND Belegdatum Between :MonatsAnfang and :MonatsEnde');

    DM.AdsQBelege.ParamByName('ExportDatum').AsDateTime := Now();
    DM.AdsQBelege.ParamByName('MonatsAnfang').AsDate := StartMonat;
    DM.AdsQBelege.ParamByName('MonatsEnde').AsDate := EndMonat;
    DM.AdsQBelege.ExecSQL;
So funktioniert das jetzt.
Hat noch jemand was daran auszusetzen, dass es nur unter bestimmten Bedingungen laufen kann oder dass noch Exceptions abgefangen werden müssen oder sonst was, das ich als begeisterter, wissbegieriger SQL-Schüler wissen sollte ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Seite 2 von 2     12   

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