| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 所有产品 | 留言 | 论坛 | 购买指南 | 网络协议 | 驱动设计 | 
您现在的位置: 21嵌入式控制研究室 >> ARM >> 其它 >> 文章正文 用户登录 新用户注册
Delphi 4.0及Visual Basic 6.0编程中与数据库相关的若干技巧            【字体:
Delphi 4.0及Visual Basic 6.0编程中与数据库相关的若干技巧
作者:吴联国 王…    文章来源:现代电子技术    点击数:    更新时间:2006-1-5

摘要  论述Delphi及Visual Basic编程中与数据库相关的若干技巧。

关键  SQL语言数据库报表

   曾分别用Delphi40Visual Basic 60编写了小型数据库管理系统,现将积累的一些编程经验介绍如下和大家一起分享。
1 Delphi中利用SQL语句来实现复合查询
    这里提供使用SQL语句完成复合查询的技巧。比如,要实现课表的查询,其条件有六种分别是:班级、星期、节次、教师、课程、教室。要实现两个条件以上的复合查询必须用'and'将多个条件连接起来。通常用按钮触发一个事件,给SQL语句加上'and'。这样操作比较敏琐,特别是在条件比较多的情况下。如果SQL语句中没有'or'连接,可以通过以下方法简化操作。
procedure TA1formBitBtn2ClickSenderTObject);
begin  
query1
closery  
query1
sqlClear

query1sqladd('selectfromc:\ wubiaoebiao3where 21');  
if  classs
text<>''then query1sqladd('and class='+classstext);

if  weektext<>''then query1sqladd ('and week='+weektext);
if  timeText<>''then query1sqladd('andtimer='+timetext);

if  teachertext<>''then query1sqladd('andteach='+teachertext);
  


if lessontext<>''then query1sqladd('andlesson='+lessontext);
ifclassroomtext<>'then query1sqladd

('and  classroom='+classroomtext);
query1sqladd(';');
query1open
except  
showmessage
('无效的查询');
end
classtext;='';weektext:='';  timetext:='';
teachertext;='';lessontext:='';
classroom:='';
end
2 Delphi中利用quickreport组件来
动态报表的打印  
  在delphi中,可利用quickreport组件快速完成静态报表的打印任务,但要对某一查询结果进行打印输出,即要实现动态报表的打印,则没有现成组件来直接利用,为此,我们在编程过程中再三思考,终得一妙法。比如:要对教师考勤表的统计结果进行打印,若直接用datasourcetable组件来和quickreport组件连接,只能打印出原始表中的所有记录,而无法满足用户对某些特定信息的需要。为此可根据现有的教师考勤表重建一个结构相同的副表,将副表的datasourcetable组件连接起来,设计好报表样式。然后把搜索到的记录集添加到副表中进行打印。打印结束后,再删除副表中的记录。
3 Delphi中给记录中添加照片  
  首先,在数据表中设置bolb字段,当然在dabase visualdabase等数据表中无法直接加入照片,可通过dataa accse中的dbimage组件和dialog中的openpicturedialog组件来加入bmp格式的图片。最后还应加入datasourcetable组件以便和数据表连接。代码

如下:

 

Procedure TC2formButton1ClickSenderTObject);

 

begin i
fnotopenpicturedialog2
Executethen exit

table1open

table1edit
dbimage2pictureloadfromfileopenpicturedialog2filename);

table1edit


table1post

end

VB中检查数据表以及字段存在性的方法

  当用程序代码试图向数据库中添加表时,仅因为此库中已经存在同名的数据表而出错,所以在执行建表代码前应确定表在库中的存在性。当然添加字段也同样。例如:要在"
c:工资.mdb"中建一张"工资表",在打开库后,加如下代码:
Dimtbl As TableDef  
Dimdbs As Database  
For EachtblIn dbs
TableDefs  
Iftbl
Name="工资表"Then  
dbs
Execute("droptable[表]")  
Exit For  
End If N
exttbl‘
直接在程序中应用检查表的存在性。


或者应用函数:  
 ②Public Function ynmytablemytdnameAs Stringmydbname As DatabaseAs Boolean For Each mytd In mydbnameTableDefs  
  If UCasemytdName)=UCasemytdnameThen  
      ynmytable
True E
  xitFunction   End If

   Next  
ynmytable
False  
 End Function‘确定表的存在性函数,函数值为真则存在。

  使用①或②后,建表就不会因为表的存在而出错,添加字段也同样类似。
5 VB中把一张图片以长二进制数存入  
ACCESS
数据库  
  下面代码主要功能是当用户单击Image1图片框时,应用程序弹出打开文件对话框,用户选择合适图片打开,即可存到打开的数据库中。
Image1_Click()
Data1databasenameAppPath+"档案.mdb
Data1RecordSource="档案表"
Data1Refresh  
Image1
Datafiled="照片"  
Image1
datasourceData1
Private SubImage1
_Click()  
If Image1
Picture<>LoadPicture()Then  
IfvbCancel
MsgBox("照片以存在,要替换吗?",vbOKCancelvbQuestion,"提示")

Then ExitSub  
CommonDialog1
Filter="picture(*.bmp
   |*.bmp|*.jpg|*.jpg  
CommonDialog1
Action1  
If  CommonDialog1
FileName<>""Then  
Image1
PictureLoadPictureCommonDialog1FileName
SavePicture Image1PictureCommonDialog1FileName  
Else  
ExitSub  
End  If  
Endsub

6
VB中用报表设计器实现动态数据库报表打印  
  在VB中用数据报表设计器对确定的数据库表做好报表后,再想打印同种表(字段完全相同),还需要重新设计,而这项工作不可能让用户来完成,解决的办法是:在先建一张字段完全相同的空表,然后做好报表,以后想打印不同内容,只要把内容转拷贝到此表中即可。拷贝的方法为:


Data1DatabaseName="c:/wqmdb"'欲打印报表的数据库表
Data1RecordSource="www
Data1Refresh  
Data2
DatabaseName="c:/wqmdb"'做报表的数据库表
Data2RecordSource="qqq
Data2Refresh I
Data2
RecordsetRecordCount<>0 Then  
Data2
RecordsetMoveLast  
Data2
RecordsetMoveFirst  
  For j0 To Data2RecordsetRecordCount1 Step 1 D
ata2
RecordsetDelete  
  Data2RecordsetMoveNext  
  Nextn  
EndIf  
Data1
RecordsetMoveLast  
Data1
RecordsetMoveFirst
Fori
0 To Data1RecordsetRecordCount1 Step 1  
Data2
RecordsetAddNew
Forj
0 To Data1RecordsetFieldsCount1 Step 1  
Data2
RecordsetFieldsj).ValueData1RecordsetFieldsj).Value  
Nextj  
Data2
RecordsetUpdate  
  Data1RecordsetMove Next  

Next i

 (全文结束)
文章录入:fengfeiyi    责任编辑:fengfeiyi 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)