HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SQL adattábla konvertálása DBase és Paradox formátumokba


Példaprogram letöltése

5681 bájt

Sok esetben hasznos lenne, ha az SQL szerver adattábláit le tudnánk menteni DBase vagy Paradox formátumú adattáblákká, amelyek kezeléséhez már elegendő lenne a Delphi-hez mellékelt, Borland Database Engine. Így lehetővé válna, hogy az SQL szerveren tárolt adatokat nem SQL alapú programokban is felhasználhassuk. Ennek a problémának a megoldására készítünk egy komponenst.

A mellékelt példaprogram megnyitása előtt az SQLConverter.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Amennyiben a Unit1.pas forráskódban található ADOConnection1 objektum, ConnectionString értékének beállítása az Ön gépén nem megfelelő, úgy módosítsa azt, hogy a Northwind adatbázis elérhetővé váljon.
A komponenst Connection property-jén keresztül egy ADOConnection objektumhoz rendelhetjük hozzá. Az adatbázishoz történő kapcsolódást egy ADOConnection objektum segítségével kell megvalósítani. Az adatbázison belül, a konvertálni kívánt tábla nevét az SQLTableName property-ben adhatjuk meg.
Az új tábla nevét a NewTableName property-ben állíthatjuk be. Nem kell kiterjesztést megadnunk, csak a célkönyvtár elérési útját és a tábla nevét. A komponens a konvertálás során a táblanevet automatikusan ellátja a db vagy dbf végződéssel.
A konvertálás a ConvertToParadox vagy ConvertToDBase metódusok meghívására történik, attól függően, hogy az SQL táblát milyen formátumba akarjuk konvertálni.
function ConvertToParadox: Boolean;
function ConvertToDBase: Boolean;
Mindkét függvény visszatérési értéke logikai. Csak akkor térnek vissza igaz értékkel, ha a tábla létrehozása és az adatok áttöltése is sikeres volt.
A komponens automatikusan megpróbálja az SQL adatszerkezethez legjobban illeszkedő DBase és Paradox táblaszerkezeteket létrehozni.
A komponens elkészítése
Az SQL-ben, DBase-ben és a Paradox-ban használható adatszerkezetek nagyon eltérőek.
Az SQL szerverhez a szokásos módon, ADO komponensek segítségével csatlakozhatunk. Egy TADOStoredProc komponens segítségével felhasználjuk az sp_columns tárolt eljárást, amely a megadott SQL tábla szerkezetéről szolgáltat információkat.
A lekérdezésből, számunkra 3 mező fontos, ezek a következők:
Mezőnév Jelentése
COLUMN_NAME Mezőnév.
TYPE_NAME A mező típusa, SQL elnevezéssel.
LENGTH A mező hossza.
Első lépésben létre kell hoznunk egy új adattáblát, a megfelelő mezőszerkezettel. Ehhez egy TTable objektumot használunk.
with Table do begin
  Active:=False;
  TableType:=ttDBase;
  TableName:=FNewTableName;
  FieldDefs.Clear;
end;
...
with Table.FieldDefs.AddFieldDef do begin
A FieldDef property Name tagjában adhatjuk meg a mezőnevet, a DataType-ban a mező típusát, valamint a Size tagban a mező méretét, ha szükséges.
Amikor dinamikusan hozunk létre adattáblákat, a mezők típusát a TFieldType típussal definiálhatjuk. Az alábbi két táblázat összefoglalja a DBase for Windows és a Paradox 7 által használható mezőtípusokat, valamint azok TFieldType megfelelőit.
DBase mezők
DBase típus TFieldType
CHARACTER ftString
FLOAT ftFloat
NUMBER ftFloat
DATE ftDate
LOGICAL ftBoolean
MEMO ftMemo
OLE ftDBaseOLE
BINARY ftTypedBinary
Paradox mezők
Paradox típus TFieldType
Alpha ftString
Number ftFloat
Money ftCurrency
Short ftSmallInt
Long Integer ftInteger
BCD ftBCD
Date ftDate
Time ftTime
TimeStamp ftDateTime
Memo ftMemo
Formatted Memo ftFmtMemo
Graphic ftGraphic
OLE ftParadoxOLE
Logical ftBoolean
AutoIncrement ftAutoInc
Binary ftBlob
Bytes ftBytes
Az adatszerkezet létrehozásánál meg kell próbálnunk az adott SQL mezőhöz leginkább passzoló típust megtalálni. Nyilván sem a DBase, sem a Paradox nem rendelkezik annyi lehetőséggel, mint az SQL szerver.
Miután beállítottuk a TTable szerkezetét, a CreateTable metódus meghívásával létrejön a tábla.
Table.CreateTable;
Miután elkészült a tábla, át kell töltenünk a szerveren található rekordokat. A rekordok eléréséhez egy TADOTable objektumot célszerű használni, mivel jelen esetben mindenre szükségünk van.
while not ADOTable.Eof do begin
  Table.Append;
    for i:=0 to Table.FieldCount-1 do
      try
        Table.Fields[i].Value:=ADOTable.Fields[i].Value;
      except
      end;
  Table.Post;
  ADOTable.Next;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3643DelphiFormEditor1. rész
3689DelphiProject és modul információk2. rész
3719DelphiMegnyitás, mentés3. rész
3749DelphiKódszerkesztő4. rész
3778DelphiForráskód írása, olvasása5. rész
3809DelphiInterfész a kódszerkesztő ablakhoz6. rész
3839DelphiKijelölt blokkok7. rész
3869DelphiA buffer beállításai8. rész
3899DelphiKörnyezeti és Project opciók9. rész
3929DelphiKurzor a kódszerkesztőben10. rész
3959DelphiKeresés és csere beállításai11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 343. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |