【DELPHI设计栏目提醒】:网学会员,鉴于大家对DELPHI设计十分关注,论文会员在此为大家搜集整理了“商品交易管理系统Delphi+access”一文,供大家参考学习!
索引:第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。索引可以用来排序和快速访问数据。
查询和其他形式的查询组件。并非所有的DBMS都支持应用组件,支持组件的DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。然而,大多数现代的DBMS产品存储这种数据作为数据库的一部分。一般来说,数据库开发人员和用户都不直接访问应用元数据,想反,他们通过DBMS中的工具来处理这些数据。
§2.2 数据库管理系统
数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。Access 2000就是一种关系型数据库管理系统。
DBMS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。
设计子系统有一个方便数据库及其应用创建的工具集。它典型地包含产生表、窗体、查询和报表的工具。DBMS产品还提供编程语言和对编程语言的接口;运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互〖本文来自:骆驼论文网 http://www.myeducs.cn/ 〗,以及回答查询和打印报表等;DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS引擎还涉及事务管理、锁、备份和恢复。
2. ADO方法:ADO方法是微软提供的一种数据库访问技术。通过ADO技术可方便的访问各种类型的数据库,尤其对于OLEDB类型的数据库,ADO更是访问数据库的标准接口。Delphi通过ADO技术可让开发者快速访问关系或非关系型数据库,但使用时需安装ADO的数据库引擎。
3. MIDAS方法:MIDAS方法是Delphi用于开发多层应用系统的中间透明引擎。通过MIDAS,开发者可使用相同的组件来存取不同的后台应用程序服务器。这些后台应用服务器程序包括COM+/DCOM应用程序服务器、MTS中间件或CORBA应用程序服务器。MIDAS方法实现了真正意义上的客户端程序与后台数据库的分离,但MIDAS的灵活性很差,与数据感应控件关联过于密切,限制了程序员的创造性。
4. dbExpress 方法:Delphi 6.0提供了新一代的跨平台数据访问引擎dbExpress方法,它由一组新控件、技术和驱动程序组成,并通过这些组成部分和各种数据源连链接。如配合不同的数据库动态链接库文件,还可处理后台数据库数据。因此也是Delphi和Kylix的核心数据访问。
综上所述,虽然Delphi的各个版本提供多种数据库的连接和访问方法,但在同一个应用程序中,开发者几乎不可能同时选用多种连接方法,因而选择合适方法是一个必须在开发前仔细考虑的问题。
● 5.1.2 定义数据表设计
DBD(Database Desktop)是Delphi中提供的简单实用的数据库桌面工具,它的功能是创建﹑维护以及查询数据库。
1. 表结构设计
依据表一给出的字段设计表的字段名称,字段类型,初始长度,初始值。创建数据库表结构具体操作步骤如下:
步骤1:单击Windows桌面的“开始”菜单,选择“程序”→“Borland Delphi 7”→“Database Desktop”。
步骤2:选择“File” →“New” →“Table”,在弹出的Create Table对话框中选择Table Type为Paradox7.在表结构设计窗体中填写字段名,类型,长度,默认值。
步骤3:设计好表结构后要对表结构进行保存。单击save as按钮,在弹出的保存对话框中选择Alias为“CPXSGL”(设计其他数据库时要做相应更改),填写表名后单击“保存”按钮。重复步骤2和步骤3直到设计完所有表结构。
2. 数据录入
表结构设计好后,就须对每个数据库中的表的内容进行录入。输入表字段内容具体操作步骤如下:
步骤1:单击Windows桌面的“开始”菜单,选择“程序”→“Borland Delphi 7”→“Database Desktop”。
步骤2:选择“File” →“Open” →“Table”,在弹出的Select Table对话框中选择 Alias为CPXSGL(对其他数据库表进行输入时该别名应作相应变化).
步骤3:使用“Table” →“Edit”菜单项,则即可进入编辑状态对数据直接进行修改。在编辑状态下按Insert键,可以插入一条新的记录行;按Delete下键,可以删除当前的记录。若再次选择“Table” →“Edit”菜单项,则 DBD将保存所进行的修改。重复步骤2和步骤3直到所有表内容输入完毕。
//检查主仓库是否有库存,即主仓库退货数量是否合法
for I_temp := 1 to 99 do
begin
if IMPSG_DATA.Cells[1, I_temp] <> '''' then //有效记录
begin
I_errordb := 1;
close;
sql.Clear;
sql.text := ''select id,number from Storagerecord where depotid="''
+ S_depotid + ''" and goodsid="'' + IMPSG_DATA.Cells[1, I_temp] + ''"'';
open;
S_id := fieldbyname(''id'').asstring;
I_number := fieldbyname(''number'').AsInteger - strtoint(IMPSG_DATA.cells[4, I_temp]);
if (recordcount <= 0) or (s_id = '''') then //本行商品没有库存记录
begin
messagedlg(''在【'' + cb_depot.Text + ''】内'' + Errormsg0009, mtwarning, [mbok], 0);
impsg_data.Row := I_temp;
impsg_data.Col := 1;
result := false;
close;
exit;
end
else if I_number < 0 then //库存数量小于退货数量
begin
messagedlg(''在【'' + cb_depot.Text + ''】内'' + Errormsg0010, mtwarning, [mbok], 0);
impsg_data.Row := I_temp;
impsg_data.Col := 4;
result := false;
close;
exit;
end;
end;
end;
for I_temp := 1 to 99 do
begin
if IMPSG_DATA.Cells[1, I_temp] <> '''' then //有效记录
begin
I_errordb := 1;
close;
sql.clear;
//记录进货退货记录
StrPCopy(FromBuf, Pchar(DFilePath));
ShFileOperation(OpStruc);
except
showmessage(''系统在备份数据过程中发生一个未知错误,但这并不影响新数据的备份'' + chr(13) + chr(13)
+ ''如果这个问题不解决,下次系统自动备份数据时可能也出现类似信息'');
end;
end;
end;
if not DirectoryExists(TragetPath + ''BACKUPDATA'') then
try
forcedirectories(TragetPath + ''BACKUPDATA'');
except
showmessage(''系统自动份备在创建目录时发生未知错误!'');
backupForm.Free;
canclose := true;
PrograssForm.Free;
exit;
end;
backupForm.Edit_path.Text := TragetPath + ''BACKUPDATA\'' + formatdatetime(''yyyymmdd'', date);
backupForm.OKBtnClick(sender);
PrograssForm.Free;
end;
canclose := true;
end
else
canclose := false;
end;
procedure TMainForm.Panel_mainConstrainedResize(Sender: TObject;
var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer);
begin
if Panel_main.DockClientCount > 0 then
Panel_main.Color :〖本文来自:骆驼论文网 http://www.myeducs.cn/ 〗= clBtnFace
else
Panel_main.Color := clMoneyGreen;
end;
procedure TMainForm.Panel_mainMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
I_temp: integer;
上一篇:商品管理子系统设计Delphi+SQL