Seite 1 von 1

XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:29
von Eckhard Sallermann
Mahlzeit,

da kommt sogleich eine neue Frage eines XBASE-Anfängers.

Ich habe mal ein Testprogramm geschrieben, einmal in Clipper 5.2e + Comix RDD, das gleiche Programm auch mit XBASE++

Beide Programme schreiben in eine DBF-Datei ( testdatei ) diese hat Indexdateien und auch ein Memofeld

Die XBASE-App stürtzt sporadisch mit einem Lesefehler ab, die Kompatibilät sollte doch eigentlich zum Clipper gegeben sein.
Hat jemand von euch eine Idee, woran das liegen kann ?

Gruß Ecki


Hier mal der XBASE-Code:

Code: Alles auswählen

PROCEDURE Main
local cpath		:= "\\srvfs01\testdaten\"
local nrecs		:= 0
local ntotal	:= 100000
local ndummy    := 0

SET COLLATION TO GERMAN
SET CHARSET TO OEM



clear screen
use ( cpath + "testdbf" ) new shared
dbsetorder(1)
for nrecs := 1 to ntotal
    @ 10,10 say str( nrecs * 100 / ntotal ,6,2) + " %"
    testdbf->(dbappend())
    while !testdbf->(rlock())
    enddo
    replace testdbf->nummer with testdbf->(recno())
    replace testdbf->name   with "winxp89"
    replace testdbf->datum  with date()
    replace testdbf->zeit   with time()
    replace testdbf->finfo  with "Dies ist Datensatz Nummer " + ltrim(str(testdbf->nummer))
    testdbf->(dbcommit())
    testdbf->(dbunlock())
	ndummy := inkey()
	if lastkey() = 27 .or. nextkey() = 27
	    exit
	endif
next nrecs
return

PROCEDURE DbeSys
#include "xbp.ch"
#include "dll.ch"
#include "appevent.ch"
#include 'common.ch'
#include 'std.ch'
#include 'set.ch'
#include "xbp.ch"
#include "foxdbe.ch"
#include "Dbfdbe.ch"
#include "cdxdbe.ch" 

IF ! DbeLoad( "FOXDBE" , .T.)     
	? "nicht geladen"
else
	? "Geladen"
ENDIF

IF ! DbeLoad( "CDXDBE" , .T.)     
	? "nicht geladen"
else
	? "Geladen"
ENDIF
IF ! DbeBuild( "FOXCDX" , "FOXDBE" , "CDXDBE" )
	? "nicht geladen"
else
	? "Geladen"
ENDIF
DbeSetDefault("FOXCDX")
DbeInfo(COMPONENT_ORDER , CDXDBE_MODE , CDXDBE_COMIX )
DbeInfo(COMPONENT_ORDER , FOXDBE_MEMOBLOCKSIZE , 64 )
DbeInfo(COMPONENT_ORDER , DBE_LOCKMODE , LOCKING_STANDARD ) 
DbeInfo(COMPONENT_ORDER , FOXDBE_LOCKRETRY , 100000 )
DbeInfo(COMPONENT_ORDER , FOXDBE_LOCKDELAY , 15 )
DbeInfo(COMPONENT_ORDER , CDXDBE_LOCKRETRY, 100000 )
DbeInfo(COMPONENT_ORDER , CDXDBE_LOCKDELAY , 15 )
RETURN

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:51
von UliTs
Hallo Ecki,
kannst Du bitte deine Nachricht editieren und den Quellcode mittels "Code" einrahmen? Dadurch wird er hoffentlich lesbarer :-) .

Uli

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:52
von Jan
Mir fehlt da eher die Fehlermeldung.

Jan

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:53
von brandelh
Hi,

formatiert habe ich, aber mit comix habe ich keine Erfahrungen ;-)

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:57
von Eckhard Sallermann
Hi Uli, ich werde versuchen, das beim nächsten Mal zu berücksichtigen, wusste noch nicht, dass bzw. wie das geht #-o
UliTs hat geschrieben:Hallo Ecki,
kannst Du bitte deine Nachricht editieren und den Quellcode mittels "Code" einrahmen? Dadurch wird er hoffentlich lesbarer :-) .

Uli

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 15:59
von Eckhard Sallermann

Code: Alles auswählen

oError:args         :
          -> VALTYPE: N VALUE: 33776
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Fehler beim Lesen
oError:filename     : 
oError:genCode      :         73
oError:operation    : <NUMMER>:=<33776>
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       8999
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 16:06
von Eckhard Sallermann
Dazu noch folgendes: wenn ich die DBF + Index mit XBASE++ erzeuge dann kann meine Clipper-App die DBF nicht mal öffnen, meldet gleich, dass die korrupt sei :cry:

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 16:21
von brandelh
Ich meine dass man für die COMIX CLIPPER Kompatibilität die FOXCDX oder FOXDBE ff. speziell einstellen muss.
Da steht sowas in der Hilfe zur FOXDBE bzw. FOXCDX oder bei den Hinweisen für Clipper Programmierer, irgendwo habe ich sowas gelesen.
Allerdings mangels Bedarf auch gleich überflogen ;-)

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 17:12
von Eckhard Sallermann
Tach Hubert, mal schauen, ich habe das hier gefunden:

DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDBE_LOCKMODE_CLIPPER )

Jetzt teste ich mal . . . .
brandelh hat geschrieben:Ich meine dass man für die COMIX CLIPPER Kompatibilität die FOXCDX oder FOXDBE ff. speziell einstellen muss.
Da steht sowas in der Hilfe zur FOXDBE bzw. FOXCDX oder bei den Hinweisen für Clipper Programmierer, irgendwo habe ich sowas gelesen.
Allerdings mangels Bedarf auch gleich überflogen ;-)

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 17:27
von AUGE_OHR
Eckhard Sallermann hat geschrieben:Tach Hubert, mal schauen, ich habe das hier gefunden:

DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDBE_LOCKMODE_CLIPPER )

Jetzt teste ich mal . . . .
YUP die verwende ich auch, aber das ist "nur" die COMPONENT_DATA Einstellung für die DBF .
Für den Index musst du noch die COMPONENT_ORDER setzen.

Code: Alles auswählen

DbeInfo(COMPONENT_ORDER, CDXDBE_MODE,CDXDBE_FOXPRO2X )

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 17:52
von Eckhard Sallermann
Sollte der nicht so lauten ?

DbeInfo(COMPONENT_ORDER , CDXDBE_MODE , CDXDBE_COMIX )

AUGE_OHR hat geschrieben:
Eckhard Sallermann hat geschrieben:Tach Hubert, mal schauen, ich habe das hier gefunden:

DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDBE_LOCKMODE_CLIPPER )

Jetzt teste ich mal . . . .
YUP die verwende ich auch, aber das ist "nur" die COMPONENT_DATA Einstellung für die DBF .
Für den Index musst du noch die COMPONENT_ORDER setzen.

Code: Alles auswählen

DbeInfo(COMPONENT_ORDER, CDXDBE_MODE,CDXDBE_FOXPRO2X )

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 17:53
von brandelh
Im Zweifel ausprobieren (mit Spieldaten natürlich) ;-)

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 18:00
von Eckhard Sallermann
Muss denn eigentlich in der Registry noch etwas Anderes eingestellt werden ?
Da gab es doch etwas mit Locking ?

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 18:02
von Eckhard Sallermann
Ja super, jetzt gibt`s nen Crach bei dbcommit()

Code: Alles auswählen

oError:args         :
oError:canDefault   : J
oError:canRetry     : N
oError:canSubstitute: N
oError:cargo        : NIL
oError:description  : D
oError:filename     : 
oError:genCode      :       8999
oError:operation    : DbCommit
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :          0
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 18:24
von AUGE_OHR
Eckhard Sallermann hat geschrieben:Sollte der nicht so lauten ?
DbeInfo(COMPONENT_ORDER , CDXDBE_MODE , CDXDBE_COMIX )
siehe mal in die CDXDBE.CH

Code: Alles auswählen

#define CDXDBE_COMIX           CDXDBE_FOXPRO2X
es ist also das "selbe" ;)

du hattest die COMPONENT_ORDER ja schon in deiner ersten Msg gezeigt.
verwende wenn möglich die "default" Werte d.h. du musst die nicht Werte extra eintragen.

Re: XBASE und Comix RDD

Verfasst: Mo, 17. Okt 2011 18:25
von AUGE_OHR
Eckhard Sallermann hat geschrieben:Ja super, jetzt gibt`s nen Crach bei dbcommit()
typische 8999 Fehler ... such mal im Forum nach 8999
was für ein OS() verwendest du ? Netzwerk ?

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 8:43
von brandelh
Hallo,

du solltest auch mal die Alaska KB durchsuchen FullTextSearch nach der Fehlernummer und nach COMIX

http://www.alaska-software.com/KB

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 9:05
von Eckhard Sallermann
Comix-CDX-Driver cannot open CDX-Files created by Xbase++.

Sosultion: No Workaround for this problem known!

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 9:07
von brandelh
Funktioniert es, wenn du die Indexdateien NUR im Clipperprogramm erstellen läßt ?

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 9:08
von Eckhard Sallermann
Nein, egal, ob ich die Dateien mit Clipper oder XBASE erstelle

Scheinbar taucht das Problem nur im Zusammenhanh mit Memofeldern auf

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 9:11
von Eckhard Sallermann
Doch nicht, auc, wenn kein Memofeld dabei ist gibt´s einen 8999

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 9:12
von Eckhard Sallermann
Clipper 5.2e + COMIX

Egal, ob die DBF + CDX +FPT auf einem Novellserver oder auf einen Windowsserver liegen, der Fehler taucht immer auf

Workstation ist für XBASE ein Windows 7 Professional SP 1 , neuester Patchstand

AUGE_OHR hat geschrieben:
Eckhard Sallermann hat geschrieben:Ja super, jetzt gibt`s nen Crach bei dbcommit()
typische 8999 Fehler ... such mal im Forum nach 8999
was für ein OS() verwendest du ? Netzwerk ?

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 10:54
von Eckhard Sallermann
Ah, habe noch mal geschaut, wenn ein FoxProkompatibles Lockingverfahren benutzt werden soll, dann muss man noch das CMXFOX52 vom Comix in Clipper einbinden.
Bisher schaut das gut aus

Re: XBASE und Comix RDD

Verfasst: Di, 18. Okt 2011 14:27
von Eckhard Sallermann
Nach Einbinden von CMXFOX52.OBJ in meine Clipper-App läuft es bisher super

Die DBF darf allerdings scheinbar nur von XBASE erstellt werden ( dbcreate ) , erstelle ich die DBF mit Clipper, so können nicht Beide ( XBASE + Clipper )
in die DBF schreiben, geht also nur, wenn XBASE die DBF erstellt hat