Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

if(TableName='') or(LDName='') then raiseException.Create('Unknown TableName or LDName');

Database:=Session.OpenDatabase(DatabaseName);

try

ifDatabase.IsSQLBased then raiseException.Create('Function ChangeLangDriver working only with dBase or Paradox tables');

FillChar(OptDesc, SizeOf(OptDesc), #0);

FillChar(TblDesc, SizeOf(TblDesc), #0);

StrCopy(OptDesc.szName, 'LANGDRIVER');

OptDesc.iLen := Length(LDName) + 1;

withTblDesc do

begin

StrPCopy(szTblName, TableName);

TblExt := UpperCase(ExtractFileExt(TableName));

ifTblExt = 'DBF' thenStrCopy(szTblType, szDbase)

else ifTblExt = '.DB' thenStrCopy(szTblType, szParadox)

else

begin

AnsiToOEM(StrPCopy(OptData, DatabaseName), OptData);

ifDbiOpenCfgInfoList( nil, dbiREADONLY, cfgPersistent, StrPCopy(OptData, '\DATABASES\' + StrPas(OptData) + '\DB INFO\')Cur) <> DBIERR_NONE then raiseException.Create('Unknown table type');

try

whileDbiGetNextRecord(Cur, dbiNOLOCK, @Rec, nil) <> DBIERR_EOF do ifStrComp(Rec.szNodeName, 'DEFAULT DRIVER') = 0 then

begin

StrCopy(szTblType, Rec.szValue);

Break;

end;

finally

Check(DbiCloseCursor(Cur));

end;

end;

iOptParams := 1;

pfldOptParams := @OptDesc;

pOptData := @OptData;

end;

StrPCopy(OptData, LDName);

Check(DbiDoRestructure(Database.Handle, 1, @TblDesc, nil, nil, nil, False));

finally

Session.CloseDatabase(Database);

end;

end;

Примеры использования:

ChangeLangDriver('DBDEMOS', 'EMPLOYEE', 'ancyrr');

ChangeLangDriver('DBDEMOS', 'EMPLOYEE.DB', 'ancyrr');

ChangeLangDriver('C:\DELPHI\DEMOS\DATA', 'CLIENTS.DBF', 'db866ru0');

LDName:

для D1 – имя .LD файла в каталоге IDAPI\LANGDRV;

для D2 и CB – из BDECFG32.HLP поле Short name в табличке по указателю language drivers, dBASE или поле Internal в табличке по указателю language drivers, Paradox;

для D3 и выше – не знаю так как у меня её нет, но думаю, что также, как и в D2.

Существует ли средство для вывода определения структуры таблицы?

Я создал таблицу и хочу получить её структуру, чтобы сделать изменённый оператор создания таблицы.

Nomadicотвечает:

Для этого существует утилита DB2LOOK. Она находится в SQLLIB\MISC.

Пример использования:

CONNECT TO SAMPLE USER xxx USING yyy

DB2LOOK –d SAMPLE –u xxx –e –t employee

Вывод может быть перенаправлен в файл. Полный синтаксис выдаётся по команде:

DB2LOOK ?

У меня есть текстовые файлы, которые я хочу использовать в запросах к DB2, но не хочу создавать из них постоянные таблицы в базе. Что делать?

Nomadicотвечает:

Можно воспользоваться табличными функциями (Table Functions). Они позволяют использовать файлы как таблицы. Примеры приведены в руководстве «Embedded SQL Programming Guide».

Список структуры полей таблицы

В данном проекте создается список структуры полей соответствующей таблицы, с использованием массивов Fields и IndexDefs, который затем отображается в компоненте ListBox. Демонстрационный проект (dbbrowsr.dpr) решает эту задачу несколько иначе. Вы можете сравнить две версии этого кода.

Примечание: Данный код работает только в 16-битной среде.

procedureTForm1.Button1Click(Sender: TObject);

constMyFielddefs: array[ftUnknown..ftGraphic] of string[8] = ('Unknown', 'String', 'Smallint', 'Integer', 'Word','Boolean', 'Float', 'Currency', 'BCD', 'Date','Time', 'DateTime', 'Bytes', 'VarBytes', 'Blob','Memo', 'Graphic');

var

i, Indx: integer;

Definition: string;

begin

for i := 0 toTable1.FieldCount - 1 do begin

Definition := Table1.Fields[i].DisplayLabel;

Definition := Definition + ' ' +MyFieldDefs[Table1.Fields[i].DataType];

Table1.IndexDefs.Update;

ifTable1.Fields[i].IsIndexField then begin

Indx := Table1.IndexDefs.Indexof(Table1.Fields[i].Name);

ifIndx > -1 then ifixPrimary inTable1.IndexDefs[Indx].Options thenDefinition := Definition + ' (Первичный)';

end;

Listbox1.Items.Add(Definition);

end;

end;

Приведенная выше версия не работает в 32-битной среде, поскольку в ней присутствуют дополнительные типы полей. Вот версия, которая работает в 32-битной среде:

procedureTForm1.Button1Click(Sender: TObject);

const

MyFielddefs: array[ftUnknown..ftTypedBinary] of string[11] =('Unknown', 'String', 'Smallint', 'Integer','Word', 'Boolean', 'Float', 'Currency', 'BCD','Date', 'Time', 'DateTime', 'Bytes', 'VarBytes','AutoInc', 'Blob', 'Memo', 'Graphic', 'FmtMemo','ParadoxOle', 'DBaseOle', 'TypedBinary');

var

i, Indx: integer;

Definition: string;

begin

for i := 0 toTable1.FieldCount - 1 do begin

Definition := Table1.Fields[i].DisplayLabel;

Definition := Definition + ' ' +MyFieldDefs[Table1.Fields[i].DataType];

Table1.IndexDefs.Update;

ifTable1.Fields[i].IsIndexField then begin

Indx := Table1.IndexDefs.Indexof(Table1.Fields[i].Name);

ifIndx > -1 thenifixPrimary inTable1.IndexDefs[Indx].Options thenDefinition := Definition + ' (Первичный)';

end;

Listbox1.Items.Add(Definition);

end;

end;

Создание индексного файла из Delphi

Delphi 1

Если вы используете таблицы dBASE или Paradox, то для создания нового индекса воспользуйтесь методом AddIndex. Для примера:

Table1.AddIndex('Articles','Title', []);

создаст индексный файл с именем ARTICLES с использованием поля TITLE в качестве индексного ключа. При создании вы можете воспользоваться различными индексными опциями (например, уникальность, необслуживаемый и пр.) – для получения дополнительной информации обратитесь к электронной справке по Delphi. ПРИМЕЧАНИЕ: Ваша таблица должна быть открыта исключительно для того, чтобы только воспользоваться методом AddIndex.

Поддержка/обновление индексного файла, если только при создании вы не выставили флаг «необслуживаемый», происходит автоматически.

Контекстное меню на основе базы данных

var

m:TMenuItem;

navidummy:TComponent;

…………………………………………………

procedure TMyForm.CreatePopUpMM(Sender: TObject);

begin

Navidummy.free;

Navidummy:=TComponent.create(self);

While notNaviT.EOF do

begin

m := TMenuItem.create(navidummy);

II:=II+1;

withm do begin

name :='MM'+IntToStr(II);

caption := NaviT.Fieldbyname('MyWHAT').AsString;

tag := NaviT.Fieldbyname('MyTAG').AsInteger;

visible:=True;

OnClick:= NaviExec;

end;

MyMenuItem.add(m);

NaviT.Next;

end;

NaviT.Close;

end;

procedureTMyForm.NaviExec(Sender:TObject);

begin

What.text := (Sender asTMenuItem).Caption;

{ Здесь я получаю то, что хочу ! }

Key:= (Sender asTMenuItem).Tag;

end;

Корректное закрытие базы данных приложением Delphi

Delphi 1

Очень интересный и полезный вопрос!! Я сам так с ним до конца и не разобрался! Но я попробую систематизировать события, происходящие при запросе на завершение работы Windows:

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x