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
 
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#1

ADS Datenbank meldet 'im Lesemodus' bei Query.edit

  Alt 26. Jan 2006, 20:32
Datenbank: ADS • Version: 7.1 • Zugriff über: SQL
Meine Datenbank meldet mir "Eine Datenmenge die nur zum lesen ist, kann nicht geändert werden"
In anderen Programmteilen kann ich mit der gleichen Synthax meine Datenbankwerte ändern, warum hier nicht:

Delphi-Quellcode:
//-----------------------------------------------------------------------------
// Alle Belege mit .pdf exportieren und packen, die kein Exportiert-Datum haben
//-----------------------------------------------------------------------------
procedure ExportBelegeAktuell;
var
  Datei: Textfile;
  i: Integer;
  Hour, Min, Sec, MSec: Word;
  Zeit, ExportPath, Mo: string;
  LMonat,LJahr,LTag: Word;
  Jetzt: TDateTime;

begin
  i := 0;
  ExportPath := BaseDatapath + BMandant + '\Export\';
  // Datenbank Belege öffnen und leere Feld 'Exportiert' Datensätze selektieren
  DM.AdsQBelege.Active := False;
  DM.AdsQBelege.SQL.Clear;
  DM.AdsQBelege.SQL.ADD('Select * From Belege where Exportiert is null');
  DM.AdsQBelege.open;

  if not (DM.AdsQBelege.EOF and DM.AdsQBelege.BOF) then
    begin
      // ersten Datensatz mit leerem Eportiert-Feld auslesen und Monat des Belegdatums auslesen
      // Dann nur noch Datensätze anzeigen, die Exportiert leer und Monat (Belegdatum) haben
      decodedate(DM.AdsQBelege.FieldByName('BelegDatum').AsDateTime,LJahr,LMonat,LTag);
      Mo:=IntToStr(LMonat);
      DM.AdsQBelege.Active := False;
      DM.AdsQBelege.SQL.Clear;
      DM.AdsQBelege.SQL.ADD('Select * From Belege where Exportiert is null AND Month(Belegdatum)='+Mo);
      DM.AdsQBelege.Active:=True;
      // Zählgröße des Vortschrittsbalkens setzen, anhand der Anzahl der Datensätze
      FBelege.ProgressBar1.max := DM.AdsQBelege.RecordCount;
      FBelege.ProgressBar1.Visible := true;

      // Existiert unter diesem Mandanten schon das Verz. Export ?
      // dann Dateien darin löschen, sonst Verz. anlegen.
      if not DirectoryExists(BaseDatapath + BMandant + '\Export') then
        ForceDirectories(BaseDatapath + BMandant + '\Export')
      else
        DeleteAll(ExportPath, '*.*'); //Delete all files in export

      // CSV Datei anlegen ---------------------------------------------
      assignfile(Datei, ExportPath + 'Belege.csv');
      rewrite(Datei);
      Jetzt:=Now();
      // Schleife zum ausgeben der Daten ins Export Verzeichnis
      DM.AdsQBelege.First;
      while (not DM.AdsQBelege.Eof) do
        begin
          PDFKopieren; // Hier die PDF-Datei aus dem Datensatz ins Exportverz kopieren

          // Dann den Datensatz in die CSV-Datei schreiben
          WriteLn(Datei,
            DM.AdsQBelege.FieldByName('Belegdatum').AsString + ';' +
            DM.AdsQBelege.FieldByName('Waehrung').AsString + ';' +
            FormatFloat('##,###,##0.00', DM.AdsQBelege.FieldByName('Betrag').AsFloat) + ';' +
            DM.AdsQBelege.FieldByName('SH').AsString + ';' +
            DM.AdsQBelege.FieldByName('Skontobetrag').AsString + ';' +
            DM.AdsQBelege.FieldByName('Gegenkonto').AsString + ';' +
            DM.AdsQBelege.FieldByName('StGegenkonto').AsString + ';' +
            DM.AdsQBelege.FieldByName('BelegNr').AsString + ';' +
            DM.AdsQBelege.FieldByName('Konto').AsString + ';' +
            DM.AdsQBelege.FieldByName('Bemerkung').AsString + ';' +
            DM.AdsQBelege.FieldByName('Sonstiges').AsString + ';' +
            DM.AdsQBelege.FieldByName('Eingabedatum').AsString + ';' +
            DM.AdsQBelege.FieldByName('PDFData').AsString + ';' +
            DM.AdsQBelege.FieldByName('Nr').AsString + ';' +
            DM.AdsQBelege.FieldByName('Kostenstelle').AsString + ';' +
            DM.AdsQBelege.FieldByName('Exportiert').AsString);

          // Aktuelles Datum in Feld-Exportiert schreiben
          DM.AdsQBelege.Edit; // <---------------------------------------------- Hier Fehler --------------
          DM.AdsQBelege.FieldByName('Exportiert').AsDateTime:=Jetzt;
          DM.AdsQBelege.Post;

          DM.AdsQBelege.Next; //zum nächsten Datensatz
          inc(i); // Fortschrittsbalken eins weiter setzen
          FBelege.ProgressBar1.Position := i;
        end;
      Closefile(Datei); //CSV-Datei schließen
    end;
Ist bestimmt wieder was ganz einfaches, aber ich sehe es nicht !!!!
  Mit Zitat antworten Zitat
 


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 22:18 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