vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Pack dbase-,Foxpro tabellen1.614fischlein04.09.10 08:47
Re: Pack dbase-,Foxpro tabellen852wb-soft06.09.10 10:11
Re: Pack dbase-,Foxpro tabellen823fischlein06.09.10 15:42
Re: Pack dbase-,Foxpro tabellen902fischlein15.09.10 20:33

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel