Ik ben op m'n stage nu dus het Apollo .NET component aan het gebruiken. Ik heb het op zich redelijk uitgevogeld middels de help file en de bijgeleverde sample. Ik kan prima lezen uit de DBF file, ook kan ik een DBF file weergeven middels een sorteervolgorde in een NTX bestand. En Toevoegen, Wijzigen en Verwijderen werken... zij het niet met een aantal probleempjes.Ik zal ze hieronder kort toelichten.
Als ik een Indexfile wil aanmaken, maakt hij ALTIJD een indexfile van het foute formaat aan.
In de help file staat het volgende:
Nou heb ik dus een Clipper table geprobeerd te indexen, echter werkte dit niet, hij maakt altijd een CDX index aan. (Dus een FoxPro index). Aangezien ik van alles geprobeerd heb, en niets werkte ben ik weer verder gaan speuren. Het blijkt dat je dus ook een Inline definition aan de SQL kunt toevoegen om automatische table parsing uit te schakelen en zelf alles te regelen. Ik denk prima, dat moeten we hebben! Hiervan is in de help ook enige informatie beschikbaar, om het kort te houden post ik een Example van de toepassing van Inline Definitions:
Als ik deze zelf "lees" staat er dat de tabelnaam City.dbf is, met alias City, dat hij van het type Clipper is (ttsxNTX = Clipper, ttsxFOX = FoxPro, ttsxNSX = Hiper-Six) en dat de volgende 2 indexfiles ermee geassocieerd zijn CITYNM.NTX en CITYST.NTX. Daarna komt een pipe teken en begint het verhaal weer opnieuw maar dan voor een andere DB.
Dus ik gebruik deze in de volgende vorm:
Wil ik echter zelf een index createn aan de hand van een zelf gemaakte tabel, dan maakt hij een FoxPro indexfile aan. De tabel is als volgt gecreate
Dan wordt er prima een DBF bestand aangemaakt met die structuur. Opvolgend hieraan wil ik de index aanmaken...
Dan maakt hij een FoxPro CDX Indexfile aan... dus ik denk prima, wederom Inline definities gebruiken...
En alweer krijg ik een FoxPro CDX indexfile
Wat ik ook met CREATE INDEX doe, hij maakt altijd een CDX index file aan. Ook als ik een door XBase gegenereerde Clipper Tabel gebruik!
Wat ik dus werkend heb... DBF files lezen, DBF files lezen met NTX als sortering, Gegevens toevoegen aan een DBF met slechts 1 NTX indexfile (Wijzigen en verwijderen zal met 1 NTX file ook wel werken, dit heb ik nog niet geprobeerd).
Wat me dus niet lukt... zelf een NTX file aanmaken aan de hand van een DBF tabel. Gegevens toevoegen aan een DBF bestand met meerdere NTX indexfiles (Hij update altijd alleen maar de eerste NTX file, de andere NTX indexfiles worden gewoon genegeerd).
Op de officiele website is tevens ook Apollo Utilities gratis beschikbaar. Om te kijken of de Apollo Engine het daadwerkelijk aankan om met DBF bestanden met meerdere NTX indexfiles om te gaan ben ik hier eens mee gaan stoeien. Als ik ze met DBF-Desktop LITE bewerk, dan past hij de indexfiles aan waar de wijziging van toepassing is op de indexkey. En bij verwijderen en toevoegen past hij ook prima alle indexfiles aan. Hieruit kan ik dus concluderen dat de Apollo Engine wel gewoon werkt.... Het ligt dus puur en alleen aan mijn toepassing van de broncode
Zoeken op google levert geen enkele hulpbestanden op. De meegeleverde sample rept met geen woord over indexfiles. Zowel niet in de Foxpro, Clipper of Hiper-Six taal. Op de website van Vista staat dat er een nieuwsgroep beschikbaar is voor support, echter is deze groep Read-Only wegens een migratie naar een andere webserver én helemaal leeg...
Hopelijk kan iemand op GoT me hiermee helpen, want ik word er langzaam een beetje
van. Bij voorbaat mijn excuses als het een te lange TS is.
Als ik een Indexfile wil aanmaken, maakt hij ALTIJD een indexfile van het foute formaat aan.
In de help file staat het volgende:
code:
1
2
3
4
5
6
| /* For a FoxPro table, creates NAMES tag inside CUSTOMER.CDX on "LAST+FIRST" */ CREATE INDEX names ON "customers.dbf" (last, first) /* For a HiPer-SIx table, creates UNIQUE CUSTNO tag inside ORDERS.NSX on "CUSTNO" */ CREATE UNIQUE INDEX custno ON "orders.dbf" (custno) /* For a Clipper table, creates NAMES.NTX on "LAST+FIRST" */ CREATE INDEX names ON "customers.dbf" (last, first) |
Nou heb ik dus een Clipper table geprobeerd te indexen, echter werkte dit niet, hij maakt altijd een CDX index aan. (Dus een FoxPro index). Aangezien ik van alles geprobeerd heb, en niets werkte ben ik weer verder gaan speuren. Het blijkt dat je dus ook een Inline definition aan de SQL kunt toevoegen om automatische table parsing uit te schakelen en zelf alles te regelen. Ik denk prima, dat moeten we hebben! Hiervan is in de help ook enige informatie beschikbaar, om het kort te houden post ik een Example van de toepassing van Inline Definitions:
code:
1
2
3
4
| Select * From City, State Where City.StateCode = State.StateCode [* TableName: CITY.dbf, Alias: CITY, TableType: ttsxNTX, OEMTranslate: False, Password: "", ExtraIndexes: CITYNM.NTX, CITYST.NTX | TableName: STATE.dbf, Alias: STATE, TableType: ttsxNTX, OEMTranslate: False, Password: "", ExtraIndexes: STATCODE.NTX *] |
Als ik deze zelf "lees" staat er dat de tabelnaam City.dbf is, met alias City, dat hij van het type Clipper is (ttsxNTX = Clipper, ttsxFOX = FoxPro, ttsxNSX = Hiper-Six) en dat de volgende 2 indexfiles ermee geassocieerd zijn CITYNM.NTX en CITYST.NTX. Daarna komt een pipe teken en begint het verhaal weer opnieuw maar dan voor een andere DB.
Dus ik gebruik deze in de volgende vorm:
code:
Dan werkt alles prima, hij update de indexfile zoals het hoort, en deze is ook gewoon in het Clipper formaat. 1
2
3
| INSERT INTO a_auto VALUES ('Alfa Romeo','GT','CP2','B', 2)
[* TableName: a_auto.dbf, Alias: a_auto, TableType: ttsxNTX, OEMTranslate: False, Password: "",
ExtraIndexes: A_AUTO.NTX *] |
Wil ik echter zelf een index createn aan de hand van een zelf gemaakte tabel, dan maakt hij een FoxPro indexfile aan. De tabel is als volgt gecreate
code:
1
2
| CREATE TABLE "klokdb.dbf" (KlokID INTEGER, StartTijd CHAR(19), EindTijd CHAR(19)) [* TableName: a_auto.dbf, Alias: a_auto, TableType: ttsxNTX *] |
Dan wordt er prima een DBF bestand aangemaakt met die structuur. Opvolgend hieraan wil ik de index aanmaken...
code:
1
| CREATE INDEX KlokDB_ID ON "klokdb.dbf" (KlokID) |
Dan maakt hij een FoxPro CDX Indexfile aan... dus ik denk prima, wederom Inline definities gebruiken...
code:
1
2
| CREATE INDEX KlokDB_ID ON "klokdb.dbf" (KlokID) [* TableName: klokdb.dbf, Alias: klokdb, TableType: ttsxNTX *] |
En alweer krijg ik een FoxPro CDX indexfile
Wat ik dus werkend heb... DBF files lezen, DBF files lezen met NTX als sortering, Gegevens toevoegen aan een DBF met slechts 1 NTX indexfile (Wijzigen en verwijderen zal met 1 NTX file ook wel werken, dit heb ik nog niet geprobeerd).
Wat me dus niet lukt... zelf een NTX file aanmaken aan de hand van een DBF tabel. Gegevens toevoegen aan een DBF bestand met meerdere NTX indexfiles (Hij update altijd alleen maar de eerste NTX file, de andere NTX indexfiles worden gewoon genegeerd).
Op de officiele website is tevens ook Apollo Utilities gratis beschikbaar. Om te kijken of de Apollo Engine het daadwerkelijk aankan om met DBF bestanden met meerdere NTX indexfiles om te gaan ben ik hier eens mee gaan stoeien. Als ik ze met DBF-Desktop LITE bewerk, dan past hij de indexfiles aan waar de wijziging van toepassing is op de indexkey. En bij verwijderen en toevoegen past hij ook prima alle indexfiles aan. Hieruit kan ik dus concluderen dat de Apollo Engine wel gewoon werkt.... Het ligt dus puur en alleen aan mijn toepassing van de broncode
Zoeken op google levert geen enkele hulpbestanden op. De meegeleverde sample rept met geen woord over indexfiles. Zowel niet in de Foxpro, Clipper of Hiper-Six taal. Op de website van Vista staat dat er een nieuwsgroep beschikbaar is voor support, echter is deze groep Read-Only wegens een migratie naar een andere webserver én helemaal leeg...
Hopelijk kan iemand op GoT me hiermee helpen, want ik word er langzaam een beetje
Wanna play?