|
| |

VB & Datenbanken| Re: Pack dbase-,Foxpro tabellen | |  | | Autor: wb-soft | | Datum: 06.09.10 10:11 |
| Hi!
Da hast du relativ schlechte Karten.
Die BDE stellt eine Funktion für diese Aufgabe bereit. Das ist vermutlich der einfachste Weg.
Diese Funktion kann auch aus Anwendungen aufgerufen werden. Das ist aber eher für Fortgeschrittene.
Hier noch Infos dazu:
| Zitat: |  | Die BDE kennt die Funktion DbiPackTable, die wie folgt definiert ist:
DBIResult DBIFN DbiPackTable(
hDb, hCursor, pszTableName,
[pszDriverType], bRegenIdxs);
hDB ist das Handle auf die Datenbank, während hCursor das Handle auf den Tabellen-Cursor übergibt. Über den Parameter bRegenIdxs ist zu spezifizieren, ob die BDE die Indexdateien regenerieren soll (TRUE) oder nicht (FALSE).
Diese Call ist nur über die BDE direkt erreichbar, da die VCL keine entsprechende Methode anbietet.
Die BDE kennt die Funktion DbiPackTable, die wie folgt definiert ist:
DBIResult DBIFN DbiPackTable(
hDb, hCursor, pszTableName,
[pszDriverType], bRegenIdxs);
hDB ist das Handle auf die Datenbank, während hCursor das Handle auf den Tabellen-Cursor übergibt. Über den Parameter bRegenIdxs ist zu spezifizieren, ob die BDE die Indexdateien regenerieren soll (TRUE) oder nicht (FALSE).
Diese Call ist nur über die BDE direkt erreichbar, da die VCL keine entsprechende Methode anbietet.
|  |
| Zitat: |  | This example will pack a Paradox or dBASE table therfore removing already deleted rows in a table. This function will also regenerate all out-of-date indexes (maintained indexes).
This example uses the following input:
PackTable(Table1)
The function is defined as follows:
// Pack a Paradox or dBASE table
// The table must be opened execlusively before calling this function...
procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
// Make sure the table is open exclusively so we can get the db handle...
if Table.Active = False then
raise EDatabaseError.Create('Table must be opened to pack');
if Table.Exclusive = False then
raise EDatabaseError.Create('Table must be opened exclusively to pack');
// Get the table properties to determine table type...
Check(DbiGetCursorProps(Table.Handle, Props));
// If the table is a Paradox table, you must call DbiDoRestructure...
if Props.szTableType = szPARADOX then
begin
// Blank out the structure...
FillChar(TableDesc, sizeof(TableDesc), 0);
// Get the database handle from the table's cursor handle...
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
// Put the table name in the table descriptor...
StrPCopy(TableDesc.szTblName, Table.TableName);
// Put the table type in the table descriptor...
StrPCopy(TableDesc.szTblType, Props.szTableType);
// Set the Pack option in the table descriptor to TRUE...
TableDesc.bPack := True;
// Close the table so the restructure can complete...
Table.Close;
// Call DbiDoRestructure...
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, FALSE));
end
else
// If the table is a dBASE table, simply call DbiPackTable...
if Props.szTableType = szDBASE then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, TRUE))
else
// Pack only works on PAradox or dBASE; nothing else...
raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +
'type to pack');
Table.Open;
end; |  |
Vielleicht gibt es jemanden, der das in VB übersetzen kann.
mfg
WB |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevGraph (VB/VBA) 
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|