Вход/Регистрация
Интернет решения от доктора Боба
вернуться

Swart Bob

Шрифт:

const

MaxField = 255;

sf_UnKnown = 0;

sf_String = 1;

sf_Memo = 2;

var

FieldTypes: Array[0..Pred(MaxField)] of Byte; { default unknowns }

Мы должны просмотреть структуру таблицы для получения информации об типах полей:

 with TTable.Create(nil) do

 try

DatabaseName := ADatabase;

TableName := ATable;

Active := True;

keys := -1; { no key in table }

for i:=0 to Pred(FieldDefs.Count) do

begin

if Fields[i].IsIndexField then keys := i;

FieldTypes[i] := sf_String; { default }

if (FieldDefs[i].FieldClass = TMemoField) then

FieldTypes[i] := sf_Memo

else

if (FieldDefs[i].FieldClass = TGraphicField) or

(FieldDefs[i].FieldClass = TBlobField) or

(FieldDefs[i].FieldClass = TBytesField) or

(FieldDefs[i].FieldClass = TVarBytesField) then

FieldTypes[i] := sf_UnKnown { ignore }

end

 finally

Free

 end;

2.1.4. Записи

После анализа полей таблицы, мы можем пройтись по всей таблице и получить значения полей. Для каждой записи в таблице мы сгенерируем HTML-страницу. Мы можем использовать имена полей как заголовки, используя тег <H2> для ключевых полей и тег <H3> для не ключевых полей. Код просматривает всю таблицу т преобразовывает поля в текст и выводит их в HTML-файл:

while not Eof do

begin

Inc(RecNr);

System.Assign(f,FileName+'/'+PageNr(RecNr));

System.Rewrite(f);

writeln(f,'<HTML>');

writeln(f,'<HEADER>');

writeln(f,'<TITLE>');

writeln(f,Format('%s %d/%d',[ATable,RecNr,RecordCount]));

writeln(f,'</TITLE>');

writeln(f,'</HEADER>');

writeln(f,'<BODY>');

{ print fields }

for i:=0 to Pred(FieldCount) do

if FieldTypes[i] > sf_UnKnown then

begin

if (keys >= i) then writeln(f,'<H2>')

else writeln(f,'<H3>');

writeln(f,FieldDefs[i].Name,':');

if (keys >= i) then writeln(f,'</B><BR>') { </H2> }

else writeln(f,'</B><BR>'); { </H3> }

if FieldTypes[i] = sf_Memo then

writeMemo(f,Fields[i])

else writeln(f,Fields[i].AsString);

if (keys = i) then writeln(f,'<HR>');

end;

writeln(f,'</BODY>');

writeln(f,'</HTML>');

System.Close(f);

Next

end;

Заметим, что я использую здесь одно недокументированное свойство HTML: для окончания заголовка вы можете написать </B>, но вы должны использовать <BR> для разрыва строки. Таким образом, вы можете иметь заголовки, и текст, начинающийся правее и ниже заголовка. Пожалуйста, учтите, что это недокументированное свойство и вы должны заменить его раскомментировав </H2> и </H3> если вы не желаете жить на угле <юмор>. Следующий листинг показывает как получить информацию из мемо поля базы данных и поместить его в текстовый файл. И наконец после этого мы отформатируем немного, помня что HTML игнорирует множественные переводы строки и пробелы.

  • Читать дальше
  • 1
  • ...
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: