Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
ADO [17]
ASCII и CSV [12]
Access [20]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [0]
ODBC [10]
Oracle [0]
Paradox [0]
SQL [29]
Sybase [1]
База данных [0]
Закладки [2]
Записи [0]
Индексы [10]
Компоненты и Базы данных [0]
Модуль данных [3]
Отчеты [2]
Ошибки БД [17]
Поиск [16]
Поля [0]
Сортировка и Фильтр [6]
Таблицы [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0

Форма входа

Главная » Статьи » Базы данных » ASCII и CSV

Импорт CSV ASCII
unit Cdbascii;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, DbiErrs, DbiTypes, DbiProcs, DB, DBTables;

type
  TAsciiDelimTable = class(TTable)
  private
  { Private declarations }
  fQuote: Char;
  fDelim: Char;
  protected
  { Protected declarations }
  function CreateHandle: HDBICur; override;
  procedure SetQuote(newValue: Char);
  procedure SetDelim(newValue: Char);
  public
  { Public declarations }
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  { Эти свойства не должны больше публиковаться }
  property IndexFieldNames;
  property IndexName;
  property MasterFields;
  property MasterSource;
  property UpdateMode;
  published
  { Published declarations }
  property Quote: Char read fQuote write setQuote default '"';
  property Delim: Char read fDelim write setDelim default ',';
  end;

procedure Register;

implementation

uses DBConsts;

procedure Register;
begin
  RegisterComponents('Data Access', [TAsciiDelimTable]);
end;

constructor TAsciiDelimTable.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Exclusive := True;
  TableType := ttASCII;
  fQuote := '"';
  fDelim := ',';
end;

destructor TAsciiDelimTable.Destroy;
begin
  inherited Destroy;
end;

{ Рабочий код }

function CheckOpen(Status: DBIResult): Boolean;
begin
  case Status of
  DBIERR_NONE:
  Result := True;
  DBIERR_NOTSUFFTABLERIGHTS:
  begin
  if not Session.GetPassword then
  DbiError(Status);
  Result := False;
  end;
  else
  DbiError(Status);
  end;
end;

function TAsciiDelimTable.CreateHandle: HDBICur;
const
  OpenModes: array[Boolean] of DbiOpenMode = (dbiReadWrite, dbiReadOnly);
  ShareModes: array[Boolean] of DbiShareMode = (dbiOpenShared, dbiOpenExcl);
var
  STableName: array[0..SizeOf(TFileName) - 1] of Char;
  SDriverType: array[0..12] of Char;
begin
  if TableName = '' then
  DBError(SNoTableName);
  AnsiToNative(DBLocale, TableName, STableName, SizeOf(STableName) - 1);
  StrPCopy(SDriverType, 'ASCIIDRV-' + Quote + '-' + Delim);
  Result := nil;
  while not CheckOpen(DbiOpenTable(DBHandle, STableName, SDriverType,
  nil, nil, 0, OpenModes[ReadOnly], ShareModes[Exclusive],
  xltField, False, nil, Result)) do {Повтор}
  ;
end;

procedure TAsciiDelimTable.SetQuote(newValue: Char);
begin
  if Active then
  { DBError(SInvalidBatchMove); };
  fQuote := newValue;
end;

procedure TAsciiDelimTable.SetDelim(newValue: Char);
begin
  if Active then
  { DBError(SInvalidBatchMove); };
  fDelim := newValue;
end;

end.
Категория: ASCII и CSV | Добавил: Skinner (03.07.2008)
Просмотров: 461 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz