XBase++ und SIXNSX

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Mario

XBase++ und SIXNSX

Beitrag von Mario »

Hallo,

ich plane schon seit längerem einen Einstieg in Xbase++.
Ich habe eine größere Verwaltungssoftware unter Clipper 5.2 erstellt.
Mein Frage wäre, ob bzw. wie eine Umstellung der DBase-Datenbanken unter Verwendung der SIXNSX-Datenbanktreiber zu händeln ist?
Gibt es einen Treiber für SIX-NSX ?

Gruß Mario
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Datenbanktreiber

Beitrag von Rolf Ramacher »

Hallo Mario,

die Datenbanktreiber kenne ich gar nicht. Warum möchtest du denn die Datenbanktreiber behalten. ? Ob das überhaupt geht weiß ich gar nicht.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Mario,
mir sagt das auch nichts - darum habe ich mal ein wenig im Internet gestöbert:
SIXNSX ist ein Clipper-RDD, der zu nichts kompatibel sein soll!
Am besten umstellen auf DBFCDX - der kommt dem sicher am nächsten!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Mario,

am Besten du kopierst die Daten in Clipper nach DBFNTX.
Dann in Xbase++ nach DBFCDX oder FOXCDX einlesen.
Falls du mehr als Text in den Memos hattest, diese Dinge (ich kann mich nicht mehr erinnern, was da alles ging) als eigene Datei getrennt speichern und danach wieder einlesen.

Wenn du Bilder etc. in der Memodatei gespeichert hattest, musst du FOXCDX nehmen, da nur dieser die verbesserten Memodateien hat. Grundsätzlich würde ich Memofelder (und damit natürlich auch den Rest) in FOXCDX speichern, da diese viel kleiner und leistungsfähiger als DBT sind.

RDDs können grundsätzlich NIE in Xbase++ integriert werden, diese Aufgabe übernehmen hier die DBEs, wobei die Implementierung ganz verschieden von RDDs ist.
Gruß
Hubert
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Beitrag von Lewi »

Hallo Mario,
auch einer meiner Applikation setzte ursprünglich auf den SIX-Datenbanktreiber auf. Im Zuge der Portierung nach xBase habe ich meine Datenbanken auf das xBase-CDX-Datenbankmodell umgestellt.

Der SIX-Treiber zeichnete sich u.a gegenüber dem Clipper-NTX Datenbanktreiber durch ein verbessertes Memo-Feldhandling aus und der Möglichkeit, Filter (Scopes) auf Index-Tags zu setzen. Ein Index-Scope war um ein vielfaches schneller als eine "SET FILTER" Direktive.

Die CDX-RDD von xBase++ und die SIX-RDD unterscheiden sich bezogen auf Leistungsfähigkeit und Geschwindigkeit kaum. Die Code-Umstellung war im ersten Step bei mir relativ problemlos und nicht mit sehr viel Aufwand verbunden. Im Zuge weitere Releases wurden dann Datenbankoperationen über eine Datenbank-Klasse abgewickelt.

Bei Umstellung auf xBase-CDX solltest Du auch eine Datenmigration durchführen.

Viele Grüße
Olaf
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Beitrag von Markus Walter »

Hi,

ich habe zu Clipper-Zeiten auch den SIXNSX benutzt und habe mit Xbase auf FOXCDX umgestellt. Geht soweit problemlos, es gab bei Six allerdings ein paar spezifische Funktionen (fingen glaube ich mit "sx_" an), für die es keine Entsprechung in Xbase gibt...

Grundsätzlich aber kein Problem. Nach meiner Erfahrung (und der Erfahrung anderer) sind die DBEs unter Xbase bei manchen Vorgängen langsamer als unter Clipper, aber DEUTLICH stabiler. Ich hatte zu Clipper-Zeiten bei meinen Anwendern im Netzwerk immer wieder mit defekten Memos und mit "Müll-Einträgen" in DBFs zu tun. Bei keinem meiner Xbase-Anwender ist bisher sowas aufgetreten.
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
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: XBase++ und SIXNSX

Beitrag von AUGE_OHR »

hi,
Mario hat geschrieben:Mein Frage wäre, ob bzw. wie eine Umstellung der DBase-Datenbanken unter Verwendung der SIXNSX-Datenbanktreiber zu händeln ist?
Gibt es einen Treiber für SIX-NSX ?
Der HyperSix sowie MachSix werden nicht direkt von Xbase++ v1.9x
unterstützt jedoch SixDrive sowie Comix3.

Probleme gibt es bei SX_KeyCount() und SX_KeyNo() da die Xbase++
Equivalente ( OrdkeyCount() ) extrem langsam sind (besser ein Scope
und dann selber "zählen")

Solltest du Sx_Encript() oder Sx_Decript() benutzen musst du dir auch
dafür neue eigene Routinen schreiben.

Wenn man nun nicht auf die SX_ Funktionen verzichten möchte/kann so
sollte man sich mal APOLLO ansehen.
Ich hab es mal mit Xbase++ v1.5x und sde50.dll ausprobiert nachdem
ich irgendwo einen Tip bekommen hatte und es lief !

gruss by OHR
Jimmy
Mario

Beitrag von Mario »

Hallo an alle,

erstmal vielen Dank für die zahlreichen Antworten.

Ich denke ich werde zunächst eine Umstellung auf CDX umsetzen.
CDX scheint dem NSX sehr nahe zu kommen und sollte, da keine speziellen sx_Funktionen verwendet wurden, auch einfach möglich sein.

Kann ich auf die Datenbanken und Indizes mit dem alten Clipper-Programm und dem Xbase++-Programm gleichzeitig zugreifen?
Das wäre sehr hilfreich, da eine Programm-Migration nur schrittweise möglich ist. Das Programm ist sehr komplex.




Viele Grüße
Mario
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

Clipper SIX und Xbase FOXCDX oder DBFCDX wird nicht gleichzeitig gehen, da zumindest die Indexdateien unterschiedlich sind.

DBFNTX ist kompatibel - solange man Sachen genutzt hat, die nur einer unterstützt.
FOXCDX ist teilweise kompatibel, da muss man die Schalter richtig setzen, allerdings habe unter Clipper nie was anderes als DBFNTX genutzt, sodass ich damit keine Erfahrungen habe.
Möglicherweise könnte man die DBF Datei unter Clipper mit SIX öffnen und unter Xbase mit DBFCDX, wobei die DBFs - vermutlich - kompatibel sind und die Indexe müsste man dann über das Programm so trennen, dass es keine Probleme gibt. Oder nur getrennte Programmteile umstellen und im jeweils anderen deaktivieren.

Wichtig dabei ist, dass Xbase++ die Indexdateien erzeugen sollte und Clipper diese dann - wenn möglich - mitnutzt.
Natürlich macht es auch einen Unterschied, ob die 'gemeinsame' Nutzung sich nur auf einen PC bezieht, bei der nacheinander verschiedene Programmteile darauf zugreifen, oder ob im LAN wirklich mehrere PC gleichzeitig zugreifen sollen. Hier müssen auch noch die Satzsperren stimmen, was natürlich schwieriger ist. Je nach Datenmenge könnte man auch übergangsweise dblocate() statt dbseek() benutzen um Indexproblemen bei der Umstellung zu begegnen.
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

Beitrag von AUGE_OHR »

hi,
Mario hat geschrieben: Ich denke ich werde zunächst eine Umstellung auf CDX umsetzen.

Kann ich auf die Datenbanken und Indizes mit dem alten Clipper-Programm und dem Xbase++-Programm gleichzeitig zugreifen?
versuche es mal mit :

Code: Alles auswählen

PROCEDURE DBESYS

   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

   DbeSetDefault( "FOXCDX" )                     //
   DbeInfo( COMPONENT_DATA , FOXDBE_CREATE_2X, .T.)
   DbeInfo( COMPONENT_DATA , FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_CLIPPER)
   DbeInfo( COMPONENT_DATA , FOXDBE_LOCKRETRY, 100000 )

   DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_SIX3)
   DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKRETRY, 100000 )
   DbeInfo( COMPONENT_ORDER, CDXDBE_LOCKDELAY, 10 )
ob du deine Clipper SIX DBF/FPT und CDX öffnen kannst.

gruss by OHR
Jimmy
Antworten