📄 delphi数据库编程.htm
字号:
add('yj',ftdate,0,false);<br>
add('zp', ftstring,10,false); {增加具体的字段名、类型}<br>
add('zdm',ftinteger,0,false);<br>
end;<br>
With indexdefs do {此方法为ljh.db增加索引字段} Begin Clear;<br>
Add('yjindex','yj',[ixprimary]);<br>
end;<br>
createtable;<br>
end;<br>
end;<br>
二、sql方法: 在面板上选取button元件置于form1表中,双击button2输入如下代码。<br>
Procedure Tform1.Button2Click(Sender: Tobject);<br>
var table2:tquery; begin table2:=tquery.create(self);<br>
with table2 do begin with sql do begin clear;<br>
add('create table "ljh.db"');<br>
add('(yj date,'); {注意引号中的‘(’}<br>
add('zp char(10),');<br>
add('zdm int)'); {注意引号中的 ')'}<br>
end;<br>
execsql;<br>
sql.clear;<br>
sql.add('create index yj on "ljh.db" (yj)'); {此sql语句为ljh.db增加索引字段}<br>
execsql;<br>
end;<br>
end;<br>
* 编译此程序即可。 * 需要注意的是用sql方法建库如果库已存在会产生错误提示,用table方法则不需考虑。<p>
(辽宁 周东锋)<br>
<center><A HREF="#Content">[目录]</A></center>
<hr><br><A NAME="I1628" ID="I1628"></A><center><b><font size=+2>在Delphi中随意控制DBGrid 每一行的颜色</font></b></center><br>
<p>
在Delphi中随意控制DBGrid 每一行的颜色<br>
中国地质大学研究生院<br>
张兵兵 黄孝林<br>
---- 有个问题是在Delphi中使用DBGrid时,如何让DBGrid中每一行颜色按照用户自己的意愿控制。最初看到这个问题时,我们以为非常非常简单,所以马上动手准备解决它。结果却发现不是那么回事,传统方法根本不能发挥作用。在电脑面前一直坐到凌晨4点,不断地调试,幸运地是凭借平时积累的一点编程经验,终于找到了开门的匙钥。现将它充公,供大家享用。<p>
---- 1、 数据表的建立<p>
---- 在Delphi的工具菜单中选择Database desktop,在数据库DBDemos下建立一个名为example.db的数据表。数据表的字段和内容如下:<p>
<br>
Name Age Wage<br>
张山 25 500<br>
王武 57 1060<br>
李市 30 520<br>
刘牛 28 390<p>
<br>
---- 2、创建基于TDBGrid的TColoredDBGrid组件<p>
---- 在Delphi组件菜单中,选择New Component,在弹出对话框中作以下设置:<p>
Ancestor Type = TDBGrid<br>
Class Name = TColoredDBGrid<p>
<br>
---- 然后单击OK按钮,Delphi自动完成组件基本框架的定义。增添OnDRawColoredDBGrid事件并使它出现在Object Inspector的Events中以便在应用程序中设定改变行颜色的条件。重载DrawCell方法,只能自己绘制单元格。不能通过在OnDrawColumnCell来设置颜色,因为在OnDrawColumnCell改变单元格的颜色会再次触发OnDrawColumnCell。<p>
---- 下面就是所创建组件的源程序 。<p>
---- 3、建立应用程序进行验证。<p>
---- 在Delphi文件菜单中选择New建立新的应用程序工程Project1和主窗体Form1,设置Form1的Caption属性为“控制DBGrid行颜色的示例”。在主窗体上添加Data Source、Table、Button和ColoredDBGrid组件。设置各组件的属性如下:<p>
Table1.Database=’DBDemos’<br>
Table1.Tablename=’example.db’<br>
Datasource1.Dataset=Table1<br>
ColoredDBGrid1.Datasource=DataSource1<br>
Button1.Caption=’退出’<p>
<br>
---- 在ColoredDBGrid1的onDRawColoredDBGrid事件中输入下列代码,设定由Wage(工资)来决定在ColoredDBGrid1各行的颜色。<p>
procedure TForm1.ColoredDBGrid1 DRawColoredDBGrid<br>
(Sender: TObject; Field: TField; var Color:<br>
TColor; var Font: TFont);<br>
Var<br>
p : Integer;<br>
begin<br>
p := Table1.FindField('wage').AsInteger;<br>
//取得当前记录的Wage字段的值。<br>
if(p < 500) then begin<br>
//程序将根据wage值设置各行的颜色。<br>
Color := clGreen;<br>
Font.Style := [fsItalic];<br>
//不仅可以改变颜色,还可以改变字体<br>
end;<br>
if(p >= 500) And (p < 800) then<br>
Color := clRed;<br>
if(p >=800) then begin<br>
Color := clMaroon;<br>
Font.Style := [fsBold];<br>
end;<br>
end;<br>
//用‘退出’按钮结束程序运行。<br>
procedure TForm1.Button1Click(Sender: TObject);<br>
begin<br>
Close;<br>
end;<p>
<br>
---- 4、程序运行结果<p>
---- 本程序在win98(中文版)和delphi4.0(C/S版)中测试运行,得到预计的结果:第一行和第三行变为红色,第二行变为棕色,第四行为绿色,满足了基本要求。<br>
<center><A HREF="#Content">[目录]</A></center>
<hr><br><A NAME="I1629" ID="I1629"></A><center><b><font size=+2>开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统</font></b></center><br>
<p>
开 发 基 于ORACLE7 数 据 库 的 管 理 信 息 系 统<br>
胜 利 石 油 管 理 局 第 六 中 学<br>
袁 海 兰<br>
---- 1 前 言<p>
---- 开 发 高 水 平 的“ 管 理 信 息 系 统”, 选 择 性 能 优 越 的 数 据 库 是 最 重 要 的 一 环, 我 们 经 过 多 方 面 的 调 研 和 分 析, 选 择 了ORACLE7 数 据 库, 成 功 地 开 发 了 本 系 统。 实 践 证 明, 本 系 统 设 计 科 学、 合 理、 运 行 稳 定, 本 文 将 具 体 阐 述 一 下 系 统 中 应 用ORACLE7 数 据 库 的 方 法 和 技 术。<p>
---- 2 系 统 的 开 发、 运 行 环 境<p>
---- 本 系 统 在CLIENT/SERVER 结 构 上 运 行,SERVER 为CDC 4360 小 型 机, 和 快 速FDDI 环 网 相 接, 内 装 有UNIX 操 作 系 统 和ORACLE7 数 据 库, 系 统 总 体 网 络 协 议 为TCP/IP 。<p>
---- CLIENT 端 为486 以 上 微 机,16M 以 上 内 存, 硬 盘 足 够 大, 通 过HUB、 路 由 器、MODEM 和SERVER 连 接。 开 发、 运 行 平 台 是WIN95, 安 装 了 网 络 软 件ONNET、ORACLE CDE 产 品 SQL*NET V2。 开 发 工 具 是POWERBULDER5.0( 以 下 简 称PB5)、VB4 等。<p>
---- 3 ORACLE7 在 系 统 中 的 各 种 应 用<p>
---- 3.1 一 般 性 的 数 据 管 理<p>
---- 一 般 性 的 数 据 管 理 用 数 据 窗 口 管 理 最 方 便, 可 以 在 数 据 窗 口 中 进 行 表 的 增、 删、 改、 查 询 等 操 作, 下 边 是 一 些 具 体 例 子(PB5):<p>
---- 3 .1 .1 连 通ORACLE 库, 并 将 数 据 装 入 数 据 窗 口:<p>
dw_1.SetTransObject(sqlca)<br>
dw_1.Retrieve()<br>
---- 3 .1 .2 增 加 一 条 记 录<p>
dw_1.InsertRow(dw_1.GetRow( ) + 1)<br>
---- 3 .1 .3 删 除 一 条 记 录( 当 前 记 录)<p>
dw_1.DeleteRow(0)<br>
---- 3 .1 .4 将 数 据 提 交 入 库( 存 盘)<p>
dw_1.Update( )<br>
commit;<br>
---- 3 .1 .5 打 印 数 据 窗 口( 表) 中 的 数 据<p>
dw_1.print()<br>
---- 3 .2 文 字 类 数 据 管 理<p>
---- 3 .2 .1 文 本 入 库 和 查 询<p>
---- 文 本 入 库 和 查 询 可 采 用PB5 的MLE( 多 行 编 辑 器) 作 界 面, 编 辑 完 成 后 存 入ORACLE7 的LONG 字 段 中, 查 询 时 从LONG 字 段 中 取 出, 放 入MLE 中 查 询, 下 边 是 一 个 例 子:<p>
//文本的预处理(以去除文本文件中的回车换行符为例说明)<br>
//将文件读入BLOB型变量<br>
text中fn=fileopen(txtname,streammode!)<br>
if fn< > -1 then<br>
fileread(fn,text)<br>
fileclose(fn)<br>
// 并 转 换 为 文 本<br>
article=string(text)<br>
s=len(article)<br>
for v=1 to s<br>
t=pos(article,char(13)+char(10),v)<br>
if t >0 then<br>
article=replace(article,t,2,"")<br>
else<br>
end if<br>
next<br>
mle_1.text=article<br>
//将处理后的文件c:\bb.txt存盘,<br>
文件中的回车换行符已全部去掉<br>
text1=blob(article)<br>
filname="c:\bb.txt"<br>
fn=fileopen(filname,streammode!,<br>
write!,lockwrite!,replace!)<br>
if fn< >-1 then<br>
filewrite(fn,text1)<br>
fileclose(fn)<br>
end if<br>
//文本入库<br>
nr1=blob(mle_1.text)<br>
updateblob gljwj set nr=:nr1 where bh=:pass_parm<br>
and zwrq=:fsj and wjbs=:fl5 using sqlca;<br>
commit;<br>
// 放 入MLE 中 查 询<br>
selectblob nr into :nr1 from gljwj where bh=:pass_parm<br>
and wjbs=:fl5 and zwrq=:fsj using sqlca;<br>
mle_1.text=blob(nr1)<br>
---- 3 .2 .2 从 库 中 重 新 生 成 文 本 文 件filename.txt 并 存 盘<p>
select nr into :filen from fwgs where bh=:bh1<br>
and lwrq=:zwrq1 using sqlca;<br>
fname="c:\filename.txt"<br>
fh=fileopen(fname,streammode!,write!,lockwrite!,replace!)<br>
if fh< >-1 then<br>
filewrite(fh,filen)<br>
fileclose(fh)<br>
end if<br>
---- 3 .3 处 理 图 象 文 件( 大 的 二 进 制 文 件)<p>
---- 图 象 文 件( 一 般 为BMP 位 图 文 件) 是 二 进 制 文 件, 将 其 以 数 据 流 方 式 存 入ORACLE7 的LONG 字 段 中, 查 询 时 从LONG 字 段 中 取 出, 放 入 图 象 框( 如p_1) 中 查 询, 下 边 是 一 个 例 子:<p>
// 将 图 象 文 件 读 入BLOB 型 变 量pict 中<br>
fn=fileopen(picname,streammode!)<br>
if fn< > -1 then<br>
fileread(fn,pict)<br>
fileclose(fn)<br>
// 将 图 象 放 入 图 象 框p_1 内 查 看<br>
setpicture(p_1,pict)<br>
end if<br>
// 将 图 象 存 入 表pic 的LONG 字 段bmpt 中<br>
updateblob pic set bmpt=:pict ;<br>
commit;<br>
---- 较 大 的 图 象 文 件 一 次 不 能 入 库, 可 采 取 分 割 图 形 的 方 式, 分 块 存 入, 因 为LONG 字 段 所 存 放 的 数 据 大 小 一 般 是 没 限 制
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -