страница 1 страница 2
Всевозможные типы полей СУБД Paradox
Тип поля
|
Обозначение
|
Хранимые значения
|
Alpha
|
A
|
Символьные значения длиной до 255 символов.
|
Number
|
N
|
Числовые значения с плавающей точкой в диапазоне -10307...+10308. Точность до 15 значащих цифр.
|
Money
|
$
|
Аналогичен типу Number, но предназначен для хранения денежных сумм. Число знаков после запятой по умолчанию - При показе значения выводится знак денежной единицы.
|
Short
|
S
|
Целочисленные значения в диапазоне -32 767..32 767.
|
LongInteger
|
I
|
Целочисленные значения в диапазоне -2 147 483 648 .. 2 147 483 647.
|
BCD
|
#
|
Числовые значения, в том числе и дробные, в двоично-десятичном формате. Обеспечивает исключительную точность при работе с большим числом знаков в дробной части. Применяется в вычислениях, где важна точность (финансовые, научные приложения). Для проведения вычислений требует больше времени, чем для числовых полей иных типов.
|
Date
|
D
|
Значения даты (в диапазоне от 01.01.9999 до н.э. до 31.12.9999).
|
Time
|
Т
|
Значения времени.
|
Timestamp
|
@
|
Значения даты и времени.
|
Memo
|
M
|
Строковые значения длиной более 255 символов. Максимальная длина не ограничена. От 1 до 240 символов могут храниться вместе с таблицей БД; остальные хранятся в виде Memo-файла (расширение .MB)
|
Formatted Memo
|
F
|
Аналогично мемо-полю, но может хранить форматированные тексты, в которых фрагменты текста представлены разным шрифтом, цветом и стилями.
|
Graphic Fields
|
G
|
Графические изображения в формате файлов BMP, .PCX, .TIF, .GIF, .EPS, которые при хранении преобразуются к формату. BMP. Хранятся отдельно от основной таблицы БД.
|
OLE
|
О
|
Информация в форматах, поддерживаемых технологией OLE (Object Linking and Embedding) фирмы Microsoft
|
Logical
|
L
|
Логические значения ("True", "False"). Высота 5укв не имеет значения
|
Autoincrement
|
±
|
Автоинкрементное поле. Значения доступны только для чтения. Обычно - ключевое поле в составе первичного ключа. При добавлении новой записи значение поля вычисляется автоматически таким образом, чтобы в одной и той же таблице не было одинаковых значений. Значения поля из удаленных записей повторно не используются
|
Binary
|
В
|
Произвольные двоичные значения. Должны интерпретироваться приложениями пользователя. DBD не интерпретирует значения этих полей. Хранятся в отдельных от основной таблицы .МВ -файлах. Длина не определена
|
Bytes
|
Y
|
Произвольные двоичные значения, интерпретируемые приложениями пользователя, длиной от 1 до 240 байт. Хранятся вместе с таблицей БД.
|
Рис. 8 Типы полей СУБД Paradox
Рис. 9. Определение структуры таблицы Material
Рис. 10. Окно сохранения таблицы
Рис. 11. Содержимое таблицы Materialy - записи еще не введены
Рис. 12. Структура таблицы Prihod
Рис. 13. В правой части окна появился элемент Secondary Indexes.
Рис. 14. Определение полей, входящих в состав индекса
Рис. 15. Окно сохранения индекса
Рис. 16. Список индексов, определенных для таблицы Prihod
Рис. 17. Окно для создания ссылочной целостности
Рис. 18. Определение условий ссылочной целостности
Рис. 19. Список индексов таблицы Prihod после создания ссылочной целостности
Рис. 20. Палитра компонентов Delphi
Рис. 21. Вид формы на этапе разработки
Рис. 22. Вид формы №3 во время выполнения
Рис. 23. Форма с родительским и дочерними наборами данных во время разработки
Рис. 24. В подчиненном наборе данных показываются записи, связанные с текущей записью в родительском НД
Рис. 25. Окно установки значения свойства MasterFields
Рис. 26. Связь Master-Detail - в дочернем наборе данных
показываются только подчиненные записи
Рис. 27. Форма с визуальными компонентами для работы
с полями текущей записи набора данных
Рис. 28. Добавление новой записи
Рис. 29. Окно подтверждения удаления записи
а) б) в)
Рис. 30. Работа с редактором полей: а) пустой список редактора полей:
б) добавление полей; в) заполненный список редактора полей.
Рис. 31. Состав полей DBGrid2 определяется списком редактора полей
Рис. 32. а) пустой список столбцов DBGrid2; б) заполненный список столб
Рис. 33. Установка заголовков столбцов DBGrid1 и 2
Рис. 34. Материалы отсортированы по дате поступления
Рис. 35
Рис. 36 Вид запущенного приложения
Рис. 37. Соединение данных из разных таблиц в одном наборе данных
Рис. 38 Пустая сетка отчета. Образуется после размещения в форме компонента TquickRep
Рис. 39 Сетка отчета с размещенными в ней компонентами отчета
Рис. 40 В отчете определен только его заголовок
Рис. 41. Отчет с заголовком и группой детальной информации
Рис. 42 Содержимое отчета в окне предварительного просмотра
Рис. 43 В отчете появились заголовки столбцов
Рис. 44 Построение формулы
Puc. 45 Макет отчета с группировкой по товару
Рис. 46 Отчет с группировкой по товару в окне предварительного просмотра
Рис. 47 Макет итогового отчета
Puc. 48 Отчет по товарам с итоговым значением
П2. Листинг модуля Writesum.pas
Unit Writesum;
interface
uses SysUtils;
{ Функция перевода суммы, записанной цифрами в сумму прописью: например, 23.12 -> двадцать три тенге 12 тиын. Переводит до 999999999 тенге 99 тиын. Функция не отслеживает, правильное ли значение получено в параметре Number (т.е. положительное и округленное с точностью до сотых) - эту проверку необходимо провести до вызова функции.}
function SumNumToFull(Number:real):string;
implementation
function SumNumToFull(Number:real):string;
var
PartNum, TruncNum, NumTMP, D: integer;
NumStr : string;
i, R : byte;
Flag11 : boolean;
Begin
D:=1000000;
R:=4;
TruncNum:=Trunc(Number); //выделяем тенге
if TruncNum<>0
then
repeat
PartNum:=TruncNum div D;
Dec(R);
D:=D div 1000;
Until PartNum<>0
else
R:=0;
// перевод тенге
FOR i:=R DOWNTO 1 DO
BEGIN
Flag11:=False;
NumTMP:=PartNum div 100; {выделение цифры сотен}
Case NumTMP of
1: NumStr:=NumStr+'СТО ';
2: NumStr:=NumStr+'ДВЕСТИ ';
3: NumStr:=NumStr+'ТРИСТА ';
4: NumStr:=NumStr+'ЧЕТЫРЕСТА ';
5: NumStr:=NumStr+'ПЯТЬСОТ ';
6: NumStr:=NumStr+'ШЕСТЬСОТ ';
7: NumStr:=NumStr+'СЕМЬСОТ ';
8: NumStr:=NumStr+'ВОСЕМЬСОТ ';
9: NumStr:=NumStr+'ДЕВЯТЬСОТ ';
end;
NumTMP:=(PartNum mod 100) div 10; {выделение цифры десятков }
Case NumTMP of
1: begin
NumTMP:=PartNum mod 100;
case NumTMP of
10: NumStr:=NumStr+'ДЕСЯТЬ ';
11: NumStr:=NumStr+'ОДИННАДЦАТЬ ';
12: NumStr:=NumStr+'ДВЕНАДЦАТЬ ';
13: NumStr:=NumStr+'ТРИНАДЦАТЬ ';
14: NumStr:=NumStr+'ЧЕТЫРНАДЦАТЬ ';
15: NumStr:=NumStr+'ПЯТНАДЦАТЬ ';
16: NumStr:=NumStr+'ШЕСТНАДЦАТЬ ';
17: NumStr:=NumStr+'СЕМНАДЦАТЬ ';
18: NumStr:=NumStr+'ВОСЕМНАДЦАТЬ ';
19: NumStr:=NumStr+'ДЕВЯТНАДЦАТЬ ';
end;
case i of
3: NumStr:=NumStr+'МИЛЛИОНОВ ';
2: NumStr:=NumStr+'ТЫСЯЧ ';
1: NumStr:=NumStr+'ТЕНГЕ ';
end;
Flag11:=True;
end;
2: NumStr:=NumStr+'ДВАДЦАТЬ ';
3: NumStr:=NumStr+'ТРИДЦАТЬ ';
4: NumStr:=NumStr+'СОРОК ';
5: NumStr:=NumStr+'ПЯТЬДЕСЯТ ';
6: NumStr:=NumStr+'ШЕСТЬДЕСЯТ ';
7: NumStr:=NumStr+'СЕМЬДЕСЯТ ';
8: NumStr:=NumStr+'ВОСЕМЬДЕСЯТ ';
9: NumStr:=NumStr+'ДЕВЯНОСТО ';
end;
NumTMP:=PartNum mod 10; {выделение цифры единиц}
if not Flag11 then
begin
case NumTMP of
1: if i=2 then NumStr:=NumStr+'одна ' else NumStr:=NumStr+'ОДИН ';
2: if i=2 then NumStr:=NumStr+'две ' else NumStr:=NumStr+'ДВА ';
3: NumStr:=NumStr+'ТРИ ';
4: NumStr:=NumStr+'ЧЕТЫРЕ ';
5: NumStr:=NumStr+'ПЯТЬ ';
6: NumStr:=NumStr+'ШЕСТЬ ';
7: NumStr:=NumStr+'СЕМЬ ';
8: NumStr:=NumStr+'ВОСЕМЬ ';
9: NumStr:=NumStr+'ДЕВЯТЬ ';
end;
case i of
3: case NumTMP of
1 : NumStr:=NumStr+'МИЛЛИОН ';
2,3,4: NumStr:=NumStr+'МИЛЛИОНА ';
else NumStr:=NumStr+'МИЛЛИОНОВ ';
end;
2: case NumTMP of
1 : NumStr:=NumStr+'ТЫСЯЧА ';
2,3,4: NumStr:=NumStr+'ТЫСЯЧИ ';
else if PartNum<>0 then NumStr:=NumStr+'ТЫСЯЧ ';
end;
1: case NumTMP of
1 : NumStr:=NumStr+'ТЕНГЕ ';
2,3,4: NumStr:=NumStr+'ТЕНГЕ ';
else NumStr:=NumStr+'ТЕНГЕ ';
end;
end;
end;
if i>1 then begin
PartNum:=(TruncNum mod (D*1000)) div D;
D:=D div 1000;
end;
END;
//перевод тиынок
PartNum:=Round(Frac(Number)*100);
if PartNum=0 then
begin
SumNumToFull:=NumStr+'00 ТИЫН';
Exit;
End;
NumTMP:=PartNum div 10; {выделение цифры десятков }
if NumTMP=0 then NumStr:=NumStr+'0'+IntToStr(PartNum)+' '
else NumStr:=NumStr+IntToStr(PartNum)+' ';
NumTMP:=PartNum mod 10; {выделение цифры единиц}
Case NumTMP of
1: if PartNum<>11 then NumStr:=NumStr+'ТИЫН'
else NumStr:=NumStr+'ТИЫН';
2,3,4: if (PartNum<5) or (PartNum>14)
then NumStr:=NumStr+'ТИЫН'
else NumStr:=NumStr+'ТИЫН';
else NumStr:=NumStr+'ТИЫН';
end;
SumNumToFull:=NumStr;
end; //---SumNumToFull
end.
Задания для самостоятельного выполнения:
-
Создать базу данных «Школа» на Аccess С использованием форм. Кнопок управления (3 неделя).
-
Создать базу данных «Поликлиника» на Аccess и связать с Дельфи.(4-5 неделя).
-
Создать базу данных «Товары» на Paradox-e в Database Desktop (6-7 неделя).
-
Создать базу данных «Салон красоты» на Paradox-e в Database Desktop (6-7 неделя).
-
Создать базу данных «Учет товаров в продуктовом магазине» на Paradox-e e в Database Desktop (6-7 неделя).
-
Создать базу данных «Продажа компьютерных дисков» используя среду программирования Дельфи (8-9 неделя).
-
Создать базу данных «Учет товаров в мебельном цехе» используя среду программирования Дельфи (10-11 неделя).
-
Создать базу данных «Библиотека» используя среду программирования Дельфи (12-13 неделя)
-
Создать базу данных «Учет товаров по продаже сотовых телефонов» используя среду программирования Дельфи (14-15 неделя).
страница 1 страница 2
|