TSQLQuery and TDBGrid |
尚未結案
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
ccchen
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
引言: 但如果那個是TSQLQuery,是否一樣呢?因為我正在用dbExpress的元件.. 謝TSQLQuery是只能單向的DataSet(unidirectional ),而TDBGrid必須可以雙向移動, 因此無法接在TDBGrid上 你可以加上一個TDataSetProvider及TClientDataSet, 將Tdatasetprovider接向TSqlQUery, TclientDataset連上TDatasetprovider, 原來的DataSOurce連TClientDataset如此就可以了 當然直接使用TSqlClientDataSet(Delphi6)或TSimpleDataset(Delphi7)也可 |
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
deity
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
deity
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
你好,找了一篇相关资料,希望能有所帮助: ---------
dbExpress 是Delphi 6.0 新加的功能,dbExpress是一个跨平台
的、不依赖于数据库的一个独立的层。它提供了一些方法用于动态SQL
的处理。它定义了一个接口用于访问不同的SQL 服务器,并为各种数
据库提供了驱动程序。
这些驱动程序在Windows和Linux下都能使用(Windows下为动态连
接库.DLL,而在Linux下为共享对象.so文件)。 这种API 驱动,减少
了数据库引擎需要的额外开销。
标准的dbExpress数据库应用是不使用数据缓存的,由于保持核心
运行时数据库访问层的简单和轻便。所以,dbExpress提供了高性能的
数据库连接,运行速度很高。但是,不用数据缓存将无法修改数据,
而且,指针的移动也是单向的。为了能够修改数据,dbExpress也提供
了一种使用数据缓存的控件,当然这无疑也会影响到效率。
目前在dbExpress能够应用的数据库有Qracle、MySQL、DB2和
InterBase,这里以InterBase 数据库为例。 一、单向的数据连接 实例数据库为Delphi提供的Employee.gdb。 1)加入 TSQLConnection
属性:
LoginPrompt=False 不用用户名和密码显示
DirverName=InterBase 驱动程序名
ConnectionName=IBLoca 默认数据库(Database.gdb)
Params 点对话框出现信息表,修改数据库的名字Employee.gdb Connected=true 如果连接正确,将可以顺利的为true; 2)加入 TSQLDataset
属性:
SQLConnection=SQLConnection名字
CommandType=ctTable 用表名连接
CommandText=表名
Active=true 如果正确,将可以为true; 3)加入 TDataSource
属性:
DataSet=SQLDataSet名字
4)加入数据绑定控件,由于不用缓存,所以不能用DBGrid,这里只
用简单的DBEdit。
注意属性:
DataSource=DataSource名字
DataField=字段名 5)注意,SQLDataset移动指针只有两个方法 SQLdataset1.Next;
SQLdataset1.First; 这就可以运行了。 二、可以修改的数据连接 做一个主从结构的数据显示,要求从表是可以修改的,而且要用
DBGrid,所以,这里要用一个新的控件来联系: TSQLClientDataSet 和TSQLDataset不同TSQLClientDataSet是使用数据缓冲区的,所
以,用它连接数据源可以修改,也可以用DBGrid显示。 和上面方法相同,加入TSQLConnection作数剧源。
属性:
LoginPrompt=False 不用用户名和密码显示
DirverName=InterBase 驱动程序名
ConnectionName=IBLoca 默认数据库(Database.gdb)
Params 点对话框出现信息表,改数据库名:Employee.gdb Connected=true 如果连接正确,将可以顺利的为true; 1)做主表 加入 TSQLDataset
属性:
SQLConnection=SQLConnection1
CommandType=ctTable 用表名连接
CommandText=PROJECT (这是在Employee.gdb内的一个表)
Active=true 如果正确,将可以为true; 加入 TDataSource
属性:
DataSet=SQLDataSet1
加入数据绑定控件两个DBEdit,显示字段分别为PROJ_ID和
PROJ_NAME。
用同样的方法作两个指针移动的Button。 2)做从表 加入TSQLClientDataSet
属性:
SQLConnection=SQLConnection1
CommandType=ctTable 用表名连接
CommandText=PROJ_DEPT_BUDGET (这是在Employee.gdb内的另一个表)
Active=true (激活)
做主从连接
MasterSource=DataSource1
MasterFierds=PROJ_ID (连接字段)
加入 TDataSource
属性:
Name=DataSource2
DataSet=SQLClientDataSet1 加入DBGrid,与DataSource2连接。
这就完成了一个主从表制作,试验一下,可以发现从表是可以修改的。
仔细研究一下这个过程,归纳出设计的一般方法。一般来说,dbExpress
主要在网络中使用,特别是WebSnap 快速网络开发方法,给dbExpress 以很大
的施展空间。 ——行径窄处,留一步与人行——
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
Chance36
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 請教step for: TSQLDataSet TDataSetProvider TClientDataSet TSQLQuery TDBGrid 我找到record,但只顯示"varbyte",這是因為我的database是用varchar為data type,請問有什麼方法解決?BorlandUser 你好 各元件的關是如上的關係嗎?應該改成如下吧! TSQLDataSet TDataSetProvider TClientDataSet TDataSource TDBGrid SQLDataSet dataSetProvider.dataSet := SQLDataSet ; 如果是N-Tier架構,則以上為App Server部份,以下則為Client 端的部份 ClientDataSet.Provider := dataSetProvider; DataSource.DataSet := ClientDataSet ; DBGrid.DataSource := DataSource ; 而程式中主要的操縱點在ClientDataSet 如 ClientDataSet.CommandText :='Select * ......'; ClientDataSet.Open; ClientDataSet.First; ClientDataSet.next; ClientDataSet.ApplyUpdates(0); ..... 引言: 只顯示"varbyte",這是因為我的database是用varchar為data type,請問有什麼方法解決?這問題與data Type 無關,但發生的原因,因目前所得的資訊不足,無法判斷.. 先用傳統架構測試看看是否可正常顯示 SQLDataSet DataSource.DataSet := SQLDataSet ; DBGrid.DataSource := DataSource ; |
stillalive
初階會員 ![]() ![]() 發表:7 回覆:148 積分:41 註冊:2004-04-07 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |