Seite 2 von 3

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 8:44
von xbaseklaus
Ach ja im XPJ File muss ich da speziell bei FOXCDX noch was setzten ?

Code: Alles auswählen

   [PROJECT]
    COMPILE       = xpp
    COMPILE_FLAGS = /q
    DEBUG         = YES
    GUI           = Yes
    LINKER        = alink
    LINK_FLAGS    =
    RC_COMPILE    = arc 
    RC_FLAGS      = /v Info.arc
    PBUILD        = @project.txt
    MAKE          =
    PROJECT.XPJ

[PROJECT.XPJ]
    project.EXE

[project.EXE]

ganfang.prg
kunde.prg
xberror.prg
nrpruef.prg
...

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 8:45
von Wolfgang Ciriack
Das deutet darauf hin, das du irgendwo die Datenbank ohne Indexdatei (oder mit falscher) öffnest und bearbeitest.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 9:09
von georg
Hallo, Klaus -


das spricht dafür, dass etwas mit der Zuordnung Index<->DBF nicht stimmt.

Wenn Du z.B. den Index einer anderen DBF verwendest, das funktioniert (rein technisch), allerdings sehen die Ergebnisse etwas seltsam aus.

Daher mein Hinweis, einmal die Funktion ordList() auszuführen und auch zu prüfen, welcher TAG aktiv ist. Manchmal führt das zu einem Aha!-Erlebnis.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 9:44
von xbaseklaus
Ich habe jetzt mal ein paar mal

ein ordList() eingefügt

z.B. direkt vor append

...
? ordList()
dbAppend()
...

da zeigt er mir an:

{TERMINNR, TDAT1, FIND1}

also ist doch alles offen was ich brauche ... warum wird die CDX nicht richtig aktualisiert ?
das soll einer verstehen

Mfg. Klaus

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 9:45
von Manfred
lies mal Deine PN

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 9:54
von AUGE_OHR
xbaseklaus hat geschrieben:Nach der Umstellung von DBFNTX nach FOXCDX ...
und wie hast du die alten DBF(ntx) nach Fox gebracht ?

erstelle mal, mit deiner DBESYS, eine "frische" DBF(cdx) und den Index und versuche es dann nochmal.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 10:02
von xbaseklaus
AUGE_OHR hat geschrieben:
xbaseklaus hat geschrieben:Nach der Umstellung von DBFNTX nach FOXCDX ...
und wie hast du die alten DBF(ntx) nach Fox gebracht ?

erstelle mal, mit deiner DBESYS, eine "frische" DBF(cdx) und den Index und versuche es dann nochmal.
So ...

Code: Alles auswählen

#include "foxdbe.ch"
#include "cdxdbe.ch"
#include "dmlb.ch"


procedure main()

  SET COLLATION TO GERMAN
  SET DATE TO GERMAN
  SET EPOCH TO year(date())-80
  SET CHARSET TO ANSI

  IF ! DbeLoad( "FOXDBE", .t.)
     Alert( "FOXDBE" + MSG_DBE_NOT_LOADED , {"OK"} )
  ENDIF

  IF ! DbeLoad( "CDXDBE", .t.)
     Alert( "CDXDBE" + MSG_DBE_NOT_LOADED , {"OK"} )
  ENDIF

  IF ! DbeBuild( "FOXCDX","FOXDBE","CDXDBE"  )
     Alert( "FOXCDX" + MSG_DBE_NOT_CREATED , {"OK"} )
  ENDIF

  DbeInfo( COMPONENT_ORDER, DBE_LOCKMODE         , LOCKING_EXTENDED ) // schneller lesezugriff
  DbeSetDefault("FOXCDX")

  use adresse1 VIA DBFNTX
  copy all to fox\adresse1

 use adresse2 VIA DBFNTX
 copy all to fox\adresse2

 ...

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 10:22
von georg
Hallo, Klaus -


was gibt Dein Programm aus, wenn Du

Code: Alles auswählen

?ordSetFocus()
ausführst? Du kannst ein ordBag aktivieren, ohne (!) dass ein TAG ausgewählt wurde. Damit werden die TAGs zwar aktualisiert, aber die Sortierung ist in diesem Fall die Satznummer ...

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 10:38
von xbaseklaus
georg hat geschrieben:Hallo, Klaus -


was gibt Dein Programm aus, wenn Du

Code: Alles auswählen

?ordSetFocus()
ausführst? Du kannst ein ordBag aktivieren, ohne (!) dass ein TAG ausgewählt wurde. Damit werden die TAGs zwar aktualisiert, aber die Sortierung ist in diesem Fall die Satznummer ...
Also wenn ich vor dem dbAppend(9 folgendes einfüge

Code: Alles auswählen

? ordList()
? ordsetfocus()
? OrdBagName(1)      
? OrdBagName(2)     
? OrdBagName(3) 
wait("")

dbAppend()
...
zeigt er das an:

Code: Alles auswählen

{TDAT1, TERMINNR, FIND1}    
TERMINNR                    
termin1.CDX                 
termin1.CDX                 
termin1.CDX                 

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 10:40
von Manfred
wichtig ist doch welcher TAG aktiv ist, wenn Du der Meinung bist, das das DAtum falsch angezeigt wird.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 10:42
von georg
Hallo, Klaus -


wie Manfred schreibt, ist der falsche TAG aktiv, nämlich der mit Terminnr - Du solltest es mal mit einem ordSetFocus("TDAT1") versuchen.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Fr, 04. Mär 2016 11:12
von xbaseklaus
georg hat geschrieben:Hallo, Klaus -


wie Manfred schreibt, ist der falsche TAG aktiv, nämlich der mit Terminnr - Du solltest es mal mit einem ordSetFocus("TDAT1") versuchen.
Hallo Georg ,

habe ich da jetzt was falsch verstanden ... wenn alle Indexe offen sind müssen die doch auch aktualisiert werden !
bevor ich DBedit wieder anzeige ist dann ja auch TAG tdat1 auf ordsetFocus(tdat1) wieder geändert
Alles passt in der DBedit Anzeige.

wenn alle 3 Indexe offen sind werden Sie doch richtig aktualisiert - egal welcher zum Zeitpunkt Aktiv ist !
Solange ich vor der Anzeige mit DBedit wieder umstelle !

Starte ich jedoch das Programm neu und verwende diesen INDEX termin1.CDX ... setzte vor dem Aufruf von DBedit : ordsetFocus(tdat1)
dann sollte es doch passen !?!

Übrigens ist im Programm auch eine Benutzer DBF , dort wird auch aus dem DBedit ein Append heraus gemacht bzw aus dem DBedit ain Benutzer gelöscht
Ist nur auf Passwort indiziert ... Jedoch wenn ich diesen Index wieder nach dem Neustart aufrufe dann passt im DBedit alles
obwohl ich gelöscht bzw ein Append gemacht habe

... so ist es nur ein Problem bei der Termin1 Datenbank ...
dort sind allerdings "filter" gesetzt, eine "set relation" AKTIV und es wird zwischen SELECT Bereichen extrem hin und her gesprungen ....
vielleicht öfter als es sein müsste aber der CLIPPER CODE ist nicht von mir und einiges hätte ich bestimmt anders gemacht ...
habe selbst ewig gebraucht da durchzusteigen und manche SELECT Wechsel sind echt seltsam ... aber es hatte vorher funktioniert
und funktioniert auch immer noch WENN ich vor jedem NEUSTART die enstrechenden INDEXE neu aufbaue
aber das ist ja nicht Sinn und Zweck von dem ganzen :-(

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Sa, 05. Mär 2016 1:11
von UliTs
Hallo Klaus,

vermutlich ist nicht der richtige Index aktiv. Wenn Du aber selbige neu erstellst ist danach der richtige Index aktiv und es funktioniert dann wieder.
Wahrscheinlich sind Deine Indizes also nicht kaputt sondern nur der falsche ausgewählt.

Uli

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Sa, 05. Mär 2016 8:34
von brandelh
Kannst du die Anwendung auf einem anderen Rechner testen umd Hardwareprobleme auszuschließen ?

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Sa, 05. Mär 2016 9:20
von Jan
Klaus,

da Dein Code zu umfangreich ist um hier gepostet zu werden, die Lösung trotz aller Hinweise hier im Thread aber nicht in Sicht ist - nimm doch einfach mal Manfreds Angebot an. Manchmal muß man einfach mal zwei andere Augen über den Code sehen lassen - meine eigene Erfahrung. Ich hab mit Manfred schon so manches Telefonat und so mache Teamviewer-Session abehalten, und die Lösung war manchmal sehr aufwändig, manchmal aber auch sehr einfach (um nicht zu sagen "bescheuert"). Auch XUG-Treffen (wir haben unseres z. B. heute in Osnabrück) sind oftmals sehr hilfreich. Man wird bei seinem eigenen Code manchmal betriebsblind und dreht sich im Kreis.

Jan

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: So, 06. Mär 2016 9:27
von AUGE_OHR
xbaseklaus hat geschrieben:

Code: Alles auswählen

if file("termin1.CDX") = .F.
   OrdCreate( "termin1" , "tdat1" , "termin" )
   OrdCreate( "termin1" , "terminnr" , "terminnr" )
   OrdCreate( "termin1" , "find1" , "dkundnr" )
      
endif

   OrdListAdd("termin1")
das ist IMHO "doppelt gemoppelt" ...
wenn du diesen Code als PPO ansiehst

Code: Alles auswählen

  USE TIMEWORK.DBF EXCLUSIVE
  IF !FILE("TIMEWORK.CDX")
     INDEX ON TIMEWORK->AKTION TAG "ACTION" TO TIMEWORK.CDX
     CLOSE INDEX
     INDEX ON TIMEWORK->PATH   TAG "KUNDE"  TO TIMEWORK.CDX
     CLOSE INDEX
  ENDIF

  SET INDEX TO TIMEWORK.CDX
  SET ORDER TO TAG "KUNDE"
  BROWSE()

RETURN
geht dir vermutlich ein Licht auf ;)

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Mo, 07. Mär 2016 8:10
von brandelh
Jimmy dein Code hat eine böse Falle !

Der ALIAS hat im Index NIX zu suchen !
wenn du Felder kennzeichnen willst, dann mit FIELDS->

Der Hinweis, dass man den gewünschten TAG auch einstellen muss ist aber Gold wert ;-)

Nochmal, grundsätzlich funktionieren die Indexdateien mit Datumsfelder einwandfrei.
Wenn die Sortierung nicht stimmt wurden entweder DBF und Index unterschiedlich bearbeitet (ein anderes Programm ohne Index ?) oder der falsche ist gerade aktiv (offen sind alle !)

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Mo, 07. Mär 2016 11:20
von AUGE_OHR
brandelh hat geschrieben:Jimmy dein Code hat eine böse Falle !

Der ALIAS hat im Index NIX zu suchen !
wenn du Felder kennzeichnen willst, dann mit FIELDS->
JA ... wenn man die DBF mit einem anderen ALIAS() betreiben möchte !
brandelh hat geschrieben:Der Hinweis, dass man den gewünschten TAG auch einstellen muss ist aber Gold wert ;-)
PPO Code kann da weiterhelfen ;)

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Mo, 07. Mär 2016 11:26
von brandelh
AUGE_OHR hat geschrieben:JA ... wenn man die DBF mit einem anderen ALIAS() betreiben möchte !
ALIAS ist eine Eigenschaft zur Laufzeit. In Indexdateien gehören nur Inhalte der eigenen Datei, daher niemals der ALIASNAME !

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Mo, 07. Mär 2016 17:00
von UliTs
+1

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Di, 08. Mär 2016 14:16
von xbaseklaus
Hallo , also nachdem ich den CODE nochmal umgeschrieben bzw angepasst habe bleibt das Problem das gleiche,
wenn der Index beim start nach einem APPEND nicht neu aufgabaut wird stimmt gar nix mehr !!!

D.H. solange das Programm nicht beendet wird funktioniert alles problemlos !
Starte ich mit dem INDEX das Programm neu OHNE ihn NEU zu erstellen funktioniert NICHTS MEHR , weil der INDEX "DEFEKT" ist oder was er da immer macht !

Es ist definitiv so, dass vor dem append die richtige Datenbank in der aktive WorkArea offne ist , der index offen ist und ich durch "Set order to tag" bzw ordsetfocus()
auch der TAG passt .
Das ist ja alles durch ?select(),?alias(),?ordList(),?ordsetfocus() anzeigbar

Übrigens ob ich schreibe "set order to tag "tdat1"" bzw "set order to tag tdat1" ist egal bzw das gleiche

Auf jeden Fall muß er normalerweise den INDEX richtig aktualisieren wenn ein APPEND gemacht wird , wenn definitiv die WORKAREA passt und der INDEX offen bzw AKTIV ist ,
WAS ER NICHT MACHT , WARUM AUCH IMMER !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Ich habe jetzt mal die termin1 Datenbank gelöscht und das Jahr 2016 angelegt und dann ein APPEND gemacht ... verwende ich den INDEX nach dem NEUSTART des Programms weiter
wird nach "set order to tag tdat1" im BROWSE z.B. das neu angelegte Datum am Ende des Jahres angezeigt WARUM AUCH IMMER ????!

Hier mal die Datenbank mit INDEX ohne und mit NEUAUFBAU , vielleicht kann das ja mal jemand bei sich anzeigen lassen !! Mit einem selbst kompilierten Programm

dazu braucht es ja nur :

Code: Alles auswählen

#include "foxdbe.ch"
#include "cdxdbe.ch"
#include "dmlb.ch"

  SET COLLATION TO GERMAN
  SET DATE TO GERMAN
  SET EPOCH TO year(date())-80
  SET CENTURY ON

  IF ! DbeLoad( "FOXDBE", .t.)
     Alert( "FOXDBE" + MSG_DBE_NOT_LOADED , {"OK"} )
  ENDIF

  IF ! DbeLoad( "CDXDBE", .t.)
     Alert( "CDXDBE" + MSG_DBE_NOT_LOADED , {"OK"} )
  ENDIF

  IF ! DbeBuild( "FOXCDX","FOXDBE","CDXDBE"  )
     Alert( "FOXCDX" + MSG_DBE_NOT_CREATED , {"OK"} )
  ENDIF
  
  DbeSetDefault("FOXCDX")
und

Code: Alles auswählen

use termin1
SET INDEX TO termin1.CDX
SET ORDER TO TAG tdat1
browse()
der LINK ist ZippyShare:

http://www101.zippyshare.com/v/ihgxC9nH/file.html

Wäre schön , wenn das mal einer überprüft. DANKE

MFg Klaus

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Di, 08. Mär 2016 14:27
von Jan
Klaus,

noch einmal: Hast Du das Angebot von Manfred angenommen? Es ist ja ganz offfensichtlich, das Du irgendeine "Kleinigkeit" übersiehst. Laß da doch einfach mal jemanden drauf schauen, der nicht betriebsblind für Deinen Code ist.

Jan

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Di, 08. Mär 2016 14:43
von xbaseklaus
Jan hat geschrieben:Klaus,

noch einmal: Hast Du das Angebot von Manfred angenommen? Es ist ja ganz offfensichtlich, das Du irgendeine "Kleinigkeit" übersiehst. Laß da doch einfach mal jemanden drauf schauen, der nicht betriebsblind für Deinen Code ist.

Jan
Nein, warum soll Manfred seine Zeit vergeuden mit einem CODE den ich jetzt 4 Tage überprüft habe ,

wenn ich ein APPEND mache muss die richtige Datenbank offen sein und der INDEX ( bzw die 3 TAGs ) ... damit der INDEX richtig AKTUALISIERT wird ...
UND DAS IST SO ... auch der APPEND schreibt die DATEN korrekt in die Datenbank , ich kann sogar mehrere APPENDs machen und im DBEDIT anzeigen lassen
alles bestens ... ich kann sogar unter Benutzung des INDEX (termin1) Rechnungen erstellen wobei in einen SEEK macht mit/über diesen INDEX und es ist ALLES BESTENS

MACHE ich diesen SEEK mit dem gleichen INDEX ohne Neuaufbau nach einem NEUSTART des Programms kommt nur noch MÜLL !

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Di, 08. Mär 2016 14:48
von Manfred
HI Klaus,

das sehe ich (und andere sicherlich genauso) anders. Du gräbst und gräbst und kommst nicht weiter und spannst hier etliche Leute ein, die sich einen Kopf darum machen, was Du für ein Problem hast. Ist das besser? Wenn Du keine Hilfe haben willst, dann schließe den Thread hier und mache nicht genau das, was Du versuchst zu verhindern, in dem Du Hilfe live ablehnst.

Re: FOXCDX Datenbank mit CDX Index Problem!

Verfasst: Di, 08. Mär 2016 15:14
von Jan
Klaus,

ich denke mal das all die Leute, die sich hier mit Deinem Problem schon den Kopf zerbrochen haben (gerne! Wir sind hier in einem Forum, wo man sich sehr gerne gegenseitig hilft!), mehr Zeit darein investiert haben als Manfred braucht, um mal eben kurz über Deinen Code zu schauen mit der Erfahrung, die er hat. Es ist absolut korrekt, ein Problem hier im Forum anzusprechen. Nahezu alle Probleme lassen sich so lösen, und es haben dann auch andere etwas davon, die irgendwann einmal auf das gleiche Problem stoßen. Aber wenn man überhaupt nicht mehr voran kommt, dann muß man mal was anderes versuchen. Denn alles andere kostet noch viel mehr Zeit, Nerven, und Geduld.

Jan