Index defekt?

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Index defekt?

Beitrag von satmax »

Hallo,

heute verzweifle ich wieder mal, ich erstelle eine ganz einfache Tabelle:

Code: Alles auswählen

aFields:={}
aadd(aFields,{'CODE',       'C',3,0})
aadd(aFields,{'TAGENETTO',  'N',3,0})
aadd(aFields,{'TAGESKONTO', 'N',3,0})
aadd(aFields,{'SKONTOWERT', 'N',5,2})
aadd(aFields,{'ZAHLZIEL',   'C',50,0})
dbcreate(cFilename,aFields)
Öffne die DB, erstelle den Index mit

Code: Alles auswählen

ordCreate("ZAHLZIEL","CODE","CODE")
Dann importiere ich ein paar Datensätze. Öffne ich dann diese DB zum Anzeigen OHNE Index ist sind alle Records vorhanden, öffne ich diese DB mit Index erscheint sie LEER.

Auch mit dem DBU wird bei geöffnetem Index kein Datensatz angezeigt. Ich habe sicher schon 100er Tabellen und Indexe nach diesem Schema angelegt und noch nie so ein Problem dabei. Ganz ein Simples Feld, Kein Indexausdruck, Im Feld CODE stehen nur nummerische Texte (1-30 als String), also keine Sonderzeichen oder sonst was.


Gruß
Markus
Gruß
Markus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von Jan »

... und wann öffnest Du den erzeugten Index, so daß die hinzugefügten Datensätze auch im Index mitgeführt werden?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Index defekt?

Beitrag von georg »

Hallo, Markus -


welche DBE? DBFNTX? FOXCDX?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

Jan hat geschrieben:... und wann öffnest Du den erzeugten Index, so daß die hinzugefügten Datensätze auch im Index mitgeführt werden?

Jan
Schande über mich, ich hatte beim Datenimport den Index noch nicht geöffnet. :banghead:

DANKE!
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

georg hat geschrieben:Hallo, Markus -


welche DBE? DBFNTX? FOXCDX?
COMIX CDX
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Index defekt?

Beitrag von AUGE_OHR »

satmax hat geschrieben:COMIX CDX
und wie sieht deine DBESYS.PRG dazu aus ?
die default Einstellung kannst du c:\ALASKA\XPPW32\Source\SYS\DbeSys.prg entnehmen welche in der XPPSYS.DLL sind.

eine eigene DBESYS könnte so aussehen

Code: Alles auswählen

PROCEDURE dbeSys()
   SET COLLATION TO GERMAN
   IF !DbeLoad("DBFDBE",.T.)
      ALERT(MSG_DBFDBE_NOT_LOADED,{"OK"})
   ENDIF
   IF !DbeLoad("NTXDBE",.T.)
      ALERT(MSG_DBFDBE_NOT_LOADED,{"OK"})
   ENDIF
   IF !DbeBuild("DBFNTX","DBFDBE","NTXDBE")
      ALERT(MSG_DBFNTX_NOT_CREATED,{"OK"})
   ENDIF

   IF !DbeLoad("CDXDBE",.T.)
      ALERT("Database-Engine CDXDBE nicht geladen",{"OK"})
   ENDIF
   IF !DbeLoad("FOXDBE",.T.)
      ALERT("Database-Engine FOXDBE nicht geladen",{"OK"})
   ENDIF
   IF !DbeBuild("FOXCDX","FOXDBE","CDXDBE")
      ALERT("FOXCDX Database-Engine;konnte nicht erzeugt werden",{"OK"})
   ENDIF
   //
   // using Cl*pper Comix/SixDrive
   //
   DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. ) 
   DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDFBE_LOCKMODE_CLIPPER ) 
   //
   DbeInfo(COMPONENT_ORDER, CDXDBE_MODE,CDXDBE_FOXPRO2X )
//
// will give 8999 with Win7 SP1 "RC" 6.1.7601.17105
// not in this Modul when create EXCLUSIVE
//
// DbeInfo(COMPONENT_ORDER,DBE_LOCKMODE,LOCKING_EXTENDED)

   // use CDX as default
   DbeSetDefault( "FOXCDX" )

   RETURN
wenn du mehrere DBEs verwendest ist ein VIA zu empfehlen.
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

Hallo Jimmy,

hiermeine DBESYS:

Code: Alles auswählen

FUNCTION dbeSys()

************** Set the sorting order
SET COLLATION TO GERMAN


******* Set the date format
SET DATE TO GERMAN

IF ! DbeLoad( "DBFDBE", .T.)
   MsgBox("Database engine DBFDBE not loaded")
ENDIF

IF ! DbeLoad( "CDXDBE",.T.)
   MsgBox("Database engine CDXDBE not loaded")
ENDIF

IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
   MsgBox("DBFCDX Database-Engine;konnte nicht erzeugt werden")
ENDIF

IF ! DbeLoad( "FOXDBE", .T.)
   MsgBox( "Database-Engine FOXDBE nicht geladen" )
ENDIF


IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
   MsgBox( "FOXCDX Database-Engine;konnte nicht erzeugt werden" )
ENDIF

DbeSetDefault( "FOXCDX" )

RETURN .T.
*                          End of FUNCTION dbesys()
*****************************************************************************
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von brandelh »

das ist aber NICHT der COMIX, sondern der normale FOXCDX (der sicher moderner ist).

Der Datenimport OHNE Index ist meist schneller, danach darf muss man aber den Index neu aufbauen.
Wenn du mit CLIPPER COMIX Treiber zusammen arbeiten willst, musst du noch einige Parameter ändern ... siehe Hilfe suche nach COMIX.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

Komisch, ich merke im Moment aber keine Probleme, ausser ich vergesse wieder mal die IndexDatei zu öffnen... :lol:

Unter Clipper habe ich den COMIX Treiber von Loadstone in Verwendung, unter XBase++ so wie oben dargstellt.

Gruß
Markus
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von brandelh »

es gibt halt einen speziellen COMIX Schalter, warum weiß ich auch nicht, ich habe nie comix eingesetzt.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Index defekt?

Beitrag von AUGE_OHR »

satmax hat geschrieben:Komisch, ich merke im Moment aber keine Probleme, ausser ich vergesse wieder mal die IndexDatei zu öffnen... :lol:
dann hast du es im Netzwerk laufen und mindestens eine weiter Workstation die auf die DBF und Indexe, welche auf einem "Server" liegt, zugreifen ?

Code: Alles auswählen

   DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
   DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDFBE_LOCKMODE_CLIPPER ) 
es geht um das locking Verhalten was kompatible zu Cl*pper und SixDrive / Comix angeht.

wenn man es zusammen mit Cl*pper verwendet sollte man dies beachten.
DBE_LOCKMODE

Mit der Konstante DBE_LOCKMODE kann das Verfahren für implizite Dateisperren vorgegeben werden. Wann immer auf die Index-Datei zugegriffen wird, erfolgt eine implizite Dateisperre um die Integrität der Operation zu gewährleisten. Voreingestellt für DBE_LOCKMODE ist LOCKING_STANDARD - ein Clipper und FoxPro kompatibles Verfahren. Das Standardverfahren ist jedoch im Kontext moderner Hardware nicht sehr effizient. Wird LOCKING_EXTENDED eingestellt, so erhöht sich die Performance von Such- und Navigations-Operationen erheblich, da mit EXTENDED_LOCKING ein wechselseitiger Ausschluß von Index-Operationen nur noch bei Schreib-Operationen notwendig ist.
satmax hat geschrieben:Unter Clipper habe ich den COMIX Treiber von Loadstone in Verwendung, unter XBase++ so wie oben dargstellt.
wie ich schon sagte gibt es auch die "abgespeckte" Version von v5.3 auf die sich Xbase++ bezieht.
CDXDBE_COMIX
Wird die Konstante CDXDBE_COMIX verwendet, so arbeitet die CDX DatabaseEngine im Comix Betriebsmodus. Dieser Modus garantiert konkurierenden Betrieb mit Clipper 5.3 CDX und Comix RDD CDX Dateien. Index-Schlüssel werden in diesem Dateiformat nicht gepackt, was zu einer größeren Dateigröße, verglichen mit dem Visual FoxPro Dateiformat, führt. Desweiteren werden im Comix Modus die Clipper kompatiblen Zeichenvergleichsfolgen (siehe NTXDBE) verwendet. Die für einen Index (Tag) verwendete Sortierfolge wird nicht mit dem Index gespeichert. Die Definiton der verwendeten Zeichenvergleichstabelle, sowie Sortierfolge hängt damit immer von der Einstellung der Xbase++ Laufzeitumgebung und dem SET COLLATION TO Kommando ab. Dieses Verhalten ist kompatibel zu Clipper.
zu beachten ist das Funktions Umfang von Xbase++ einiges nicht hat, siehe hier http://www.xbaseforum.de/viewtopic.php?f=22&t=5603
gruss by OHR
Jimmy
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

@AUGE_OHR

FOXDFBE_LOCKMODE_CLIPPER sollte wohl FOXDBE_LOCKMODE_CLIPPER, das nur am Rande und für die Suchfunktion.

Der parallele Zugriff Cl*pper 5.2 (Comix RDD) und XBase 1.9 scheint prinzipiell kein Problem darzustellen.

Aber, wenn ich eine neue Tabelle in XBase erstelle (update einer bestehenden Struktur), kann ich von Cl*pper aus nicht mehr auf diese Tabelle zugreifen. Die *.ftp Datei kann nicht mehr geöffnet werden.

Gibt es dafür eine Lösung?

Gruß
Markus
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von brandelh »

Ich vermute das liegt daran, dass du FOXDBE nicht den COMIX Modus eingestellt hast.

Schau mal in der Hilfe zu FOXDBE ...
Hilfe hat geschrieben: FOXDBE_CREATE_2X

Die FOXDBE DatabaseEngine kann unterschiedliche Dateiformate, wie FoxPro 2.x/Comix oder Visual FoxPro, verwalten.
Eine Erkennung des Formates erfolgt beim Öffnen der Tabelle automatisch.
Sollen Tabellen/Dateien in eimem FoxPro 2.x/Comix Format erzeugt werden, so sind entsprechende Einstellungen vorzunehmen.
...
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

Hallo Herbert,

Das ist meine dbeSys()

Code: Alles auswählen

FUNCTION dbeSys()
SET COLLATION TO GERMAN
SET DATE TO GERMAN

IF ! DbeLoad( "DBFDBE", .T.)
   MsgBox("Database engine DBFDBE not loaded")
ENDIF

IF ! DbeLoad( "CDXDBE",.T.)
   MsgBox("Database engine CDXDBE not loaded")
ENDIF

IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
   MsgBox("DBFCDX database engine could not be created")
ENDIF


 /*
   *   Das gleiche mit FOX und CDX Database-Engine durchfhren
   */
   IF ! DbeLoad( "FOXDBE", .T.)
      MsgBox( "Database-Engine FOXDBE nicht geladen" )
   ENDIF


   IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
      MsgBox( "FOXCDX Database-Engine;konnte nicht erzeugt werden" )
   ENDIF

   DbeSetDefault( "FOXCDX" )

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

RETURN .T.

FOXDBE_CREATE_2X ändert nichts, egal ob mit oder ohne.


Gruß
Markus
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von brandelh »

Wie gesagt,

ich arbeite nicht mit COMIX, und Clipper schon lange nicht mehr. Aber neben den Daten muss man auch immer den Index setzen.
CDXDBE_MODE

Das durch die Clipper RDDs wie Comix oder Six verwendete CDX Dateiformat ist eine vereinfachte Form des Visual FoxPro CDX Dateiformates.
...
Konstanten für DbeInfo(ORDER_COMPONENT,CDXDBE_MODE,)
Constant Description
CDXDBE_VFOXPRO Visual FoxPro 5.x und neuere Versionen
CDXDBE_COMIX Comix für Clipper RDD <==== das wird auch noch benötigt.

Code: Alles auswählen

 DbeInfo(ORDER_COMPONENT,CDXDBE_MODE, CDXDBE_COMIX )
Eventuell muss man die Einstellungen auch machen, bevor man FOXCDX zusammen baut, aber da bin ich mir nicht sicher.

PS: mein Vorname ist HUBERT, HERBERT gibt es auch, aber hat hier nicht geantwortet ;-)
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

ORDER_COMPONENT gibt es leider in keinem meiner *.CH Files, in der Hilfe kann ich es einmal finden.

COMPONENT_ORDER finde ich in meinen *.ch Files (dmlb.ch) und 2x in der Hilfe. Geändert hat sich damit nichts
Gruß
Markus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Index defekt?

Beitrag von AUGE_OHR »

brandelh hat geschrieben:
CDXDBE_COMIX Comix für Clipper RDD <==== das wird auch noch benötigt.
ist gleich

Code: Alles auswählen

#define CDXDBE_VFOXPRO         0x01
#define CDXDBE_FOXPRO2X        0x02
#define CDXDBE_COMIX           CDXDBE_FOXPRO2X
#define CDXDBE_SIX3            CDXDBE_FOXPRO2X
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Index defekt?

Beitrag von AUGE_OHR »

satmax hat geschrieben:@AUGE_OHR
-> Jimmy
satmax hat geschrieben:FOXDFBE_LOCKMODE_CLIPPER sollte wohl FOXDBE_LOCKMODE_CLIPPER
gut aufgepasst ;)
satmax hat geschrieben:Aber, wenn ich eine neue Tabelle in XBase erstelle (update einer bestehenden Struktur), kann ich von Cl*pper aus nicht mehr auf diese Tabelle zugreifen. Die *.ftp Datei kann nicht mehr geöffnet werden.
Gibt es dafür eine Lösung?
Frage : wenn die Tabelle mit DBFNTX erstellt wurde kann du die dann mit Cl*pper öffnen ?

wenn du mal die Header der DBF welche mit Cl*pper vs. Xbase++ dir ansiehst wirst du Unterschiede feststellen.
auch bei den NTX Indexen musst du dich nicht wundern wenn die grösser sind als bei Cl*pper

Xbase++ hat eine 99.9% Kompatibilität zu Cl*pper Code aber die 0.01% werden dir noch zu schaffen machen.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von brandelh »

satmax hat geschrieben:ORDER_COMPONENT gibt es leider in keinem meiner *.CH Files, in der Hilfe kann ich es einmal finden.
COMPONENT_ORDER finde ich in meinen *.ch Files (dmlb.ch) und 2x in der Hilfe. Geändert hat sich damit nichts
stimmt, das steht falsch in der Hilfe aus der ich es kopiert habe ... :banghead:
Dennoch musst du COMPONENT_DATA und COMPONENT_ORDER gleich setzen, mehr kann ich nicht dazu sagen - ich nutze kein COMIX.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Index defekt?

Beitrag von satmax »

Zwischenstatus: so scheint es tatsächlich zu funktionieren, Langzeittests vorbehalten.

Code: Alles auswählen

   IF ! DbeLoad( "FOXDBE", .T.)
      MsgBox( "Database-Engine FOXDBE nicht geladen" )
   ENDIF


   IF ! DbeBuild( "FOXCDX", "FOXDBE", "CDXDBE" )
      MsgBox( "FOXCDX Database-Engine;konnte nicht erzeugt werden" )
   ENDIF

   DbeSetDefault( "FOXCDX" )

DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE , FOXDBE_LOCKMODE_CLIPPER )
DbeInfo(COMPONENT_ORDER,CDXDBE_MODE, CDXDBE_COMIX )
Gruß
Markus
Antworten