AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADS Datenbank meldet 'im Lesemodus' bei Query.edit
Thema durchsuchen
Ansicht
Themen-Optionen

ADS Datenbank meldet 'im Lesemodus' bei Query.edit

Ein Thema von Smiley · begonnen am 26. Jan 2006 · letzter Beitrag vom 31. Jan 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#11

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

  Alt 31. Jan 2006, 08:44
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();
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#12

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

  Alt 31. Jan 2006, 09:55
Zitat von joachimd:
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);
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#13

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

  Alt 31. Jan 2006, 20:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#14

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

  Alt 31. Jan 2006, 20:25
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#15

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

  Alt 31. Jan 2006, 21:17
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:50 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