AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken dBase/ODBC kann Datensatz nach Änderung nicht schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

dBase/ODBC kann Datensatz nach Änderung nicht schreiben

Ein Thema von HannsW · begonnen am 18. Jan 2010 · letzter Beitrag vom 19. Jan 2010
Antwort Antwort
HannsW

Registriert seit: 6. Jan 2010
26 Beiträge
 
#1

dBase/ODBC kann Datensatz nach Änderung nicht schreiben

  Alt 18. Jan 2010, 17:03
Datenbank: Dbase/Clipper • Version: IV • Zugriff über: ODBC/BDE
Ich muss die Artikel aus dBase/Clipper ausdrucken.
Da ich keinen ODBC-Treiber gefunden habe, der .ntx Indizes unterstützt,
gehe ich die gesamte Datenbank Satz für Satz durch ( ).
Wenn diese Artikel noch nicht in einer Rechnung gedruckt wurden,
setze ich boolean "neueRechung" auf true, und versuche, nach Ausdruck
des aktuellen Artikels, diesen mit neuer Rg_Nummer und - Datum u versehen,
und zu "Posten"
Delphi-Quellcode:
      tableAufPos.First;
      while not tableAufPos.Eof do
      begin
          if tableAufPos.FieldByName('AUFTR_NR').AsString = auftrNr then
            begin
                // Drucke den Artikel
                // neue Rechnung ?
               if neueRechnung and not istTestDruck then begin
                  tableAufPos.edit;
                  tableAufPos.FieldByName('RECH_NR').AsString
                                        := tfRechnNr.Text;
                  tableAufPos.FieldByName('RECH_DAT').AsString
                                         := tfRechDatum.Text;
                  tableAufPos.Post;
                end;
            end;
            { Ende einzelner Artikel }
            tableAufPos.Next;
       end;
Hier kann es geschehen, daß bereits beim ersten "POST" die Meldung kommt,
daß ein anderer Prozess auf die daten zugreift.

Für Aufpos habe ich ein tabelAUfPos und ein dsAUfpos verknüpft.

nachfolgender Code hingegen klappt immer:
Delphi-Quellcode:
function TRgDruckForm.incNummer ( nummernTyp: String): boolean;
var
suchen,found: boolean;
neueNummer : double;
begin
      tableNummern.Active := true;
      tableNummern.FindFirst;
      suchen := true;
      found := false;
       while suchen do
       begin
          if tableNummern.FieldByName('NUMMERNART').AsString = nummernTyp then
            begin
            suchen := false;
            found := true;
            neueNummer := tableNummern.FieldByName('NUMMER').AsFloat +1.0;
            tableNummern.edit;
            tableNummern.Fields[1].AsFloat := neueNummer;
            tableNummern.Post;
            end
          else
             suchen := tableNummern.FindNext;
       end;
     if found then
        Result := true
     else
        Result := false;

     tableNummern.Active := false;

end;
Hat irgendjemand eine rettende Idee?
Danke Hanns
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: dBase/ODBC kann Datensatz nach Änderung nicht schreiben

  Alt 19. Jan 2010, 10:01
Hallo,

richtig helfen kann ich nicht, aber:

Die erste Fehlermeldung kenne ich z. B. aus dieser Situation:

Ein Programm greift über die BDE auf eine Tabelle zu, es tritt ein Fehler auf, das Programm wird abgebrochen. Der nächste Versuch, auf den Datensatz zuzugreifen scheitert, und zwar solange, bis man alle Programme, die die BDE nutzen, beendet. Danach ist der Spuk vorbei, bis man wieder in eine Fehlersituation gerät. Deshalb dieses: Manchmal geht es, manchmal geht es nicht. Zu den Programmen, die die BDE nutzen, gehört in diesem Falle auch die IDE, die man ebenfalls beenden muss, damit alle DLL's der BDE freigegeben werden.
Aus diesem Grund habe ich mir angewöhnt: Wenn die BDE im Einsatz ist, das Öffnen von Abfragen und/oder Tabellen nicht über den Objektinspektor zu machen, sondern erst zur Laufzeit im FormCreate o. ä.. Hierdurch lassen sich Konflikte zwischen Zugriffen der Entwicklungsumgebung und Programm auf die Datenbank vermeiden.

Eine weitere mögliche Fehlerursache könnte die PDOXUSRS.NET sein. Wenn es davon mehrere auf einem Rechner gibt, kann das zu derartigen Fehlern führen, vor allem beim Mehrbenutzerbetrieb.
[edit]hat (wie üblich) Schreibfehler gefunden[/edit]
  Mit Zitat antworten Zitat
HannsW

Registriert seit: 6. Jan 2010
26 Beiträge
 
#3

Re: dBase/ODBC kann Datensatz nach Änderung nicht schreiben

  Alt 19. Jan 2010, 14:47
Zitat von nahpets:
Hallo,

richtig helfen kann ich nicht, aber:
Herzlichen Dank, Dein Beitrag hat mir immerhin gezeigt, daß es da so ein paar kleine
Problemchen gibt.

Ich habe mal vor langer Zeit eine dBase-Klasse geschrieben, die Funktionen zum Lesen etc hat.
( damals mussten dBase-Dateien in ein neues DS eingelesen werdn.

Da ich ohnehin nicht auf INdexe zu greifen kann ( NTX statt ndx) werde ich wohl das SChreiben
in "DBF"-Dateien über meine alte Klasse machen müssen. Da wird dann halt auch sequentiell
die Datei abgehandelt, aber beim Tempo der hueigen Rechner sollte dies reichen.

Danke nochmals für den Hinweis auf die "Unsicherheit ODBC/BDE"

Hanns
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

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

Re: dBase/ODBC kann Datensatz nach Änderung nicht schreiben

  Alt 19. Jan 2010, 15:50
Zitat von HannsW:
Da ich ohnehin nicht auf INdexe zu greifen kann ( NTX statt ndx) werde ich wohl das SChreiben
in "DBF"-Dateien über meine alte Klasse machen müssen. Da wird dann halt auch sequentiell
die Datei abgehandelt, aber beim Tempo der hueigen Rechner sollte dies reichen.
Advantage kann DBF/NTX direkt verarbeiten und braucht keine BDE. Komponenten und Local Server sind kostenfrei.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: dBase/ODBC kann Datensatz nach Änderung nicht schreiben

  Alt 19. Jan 2010, 16:19
Hallo,

eventuell kann auch TDBF helfen. Freewarekomponente von Sourceforge, kann auch mit diversen Indexvarianten umgehen, habe aber noch nicht herausgefunden, mit welchen Indextypen und vor allem: wie zuverlässig. Normaler Umgang mit dBase funktioniert aber problemlos.
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:38 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