線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2135
推到 Plurk!
推到 Facebook!

TSQLQuery and TDBGrid

尚未結案
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-07 18:43:37 IP:203.185.xxx.xxx 未訂閱
如何將TQuery所找到的record放在TDBGrid呢?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-07 18:52:54 IP:211.20.xxx.xxx 未訂閱
引言: 如何將TQuery所找到的record放在TDBGrid呢?
BorlandUser 你好 假設TQuery的Name := 'Query1' ; 1.放個TDataSource,設定其DataSet的屬性為Query1,name為DataSource1 2.放個TDbGrid設定其DataSource屬性為DataSource1 只要Query1.Active=True,那麼在dbGrid中即會顯示Query1的內容了。
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-08 07:39:35 IP:203.218.xxx.xxx 未訂閱
但如果那個是TSQLQuery,是否一樣呢?因為我正在用dbExpress的元件.. 謝
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-08 08:29:47 IP:218.163.xxx.xxx 未訂閱
引言: 但如果那個是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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-08 09:23:48 IP:203.185.xxx.xxx 未訂閱
我是用delphi 6 的,請問要什麼設定才可以把TSQLQuery 和TSqlClientDataSet 及 TDBgrid連上,好讓我可以把TSQLQuery的result 顯示在grid上,多謝
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-08 09:27:28 IP:203.185.xxx.xxx 未訂閱
如果沒有用DataSource,只靠TSqlClientDataSet 和 TSQLQuery 和 TDBGrid,能夠做到嗎?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-08 09:32:19 IP:218.15.xxx.xxx 未訂閱
你好: 参考Justmade大大发表的ClientDataSet 簡單範例 
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-08 09:42:23 IP:203.185.xxx.xxx 未訂閱
跟據這個範例,雖然不是用TSQLClientSet,但如果要用TSQLClientSet 也都要一個TDataSetProvide,那麼也真的很煩..
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-08 09:49:54 IP:203.185.xxx.xxx 未訂閱
當我試過了連結後,為什麼不能將TSQLQuery的output顯現在grid上呢?
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-08 10:35:00 IP:203.185.xxx.xxx 未訂閱
請教step for: TSQLDataSet TDataSetProvider TClientDataSet TSQLQuery TDBGrid Thanks so much again
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-08 11:07:25 IP:203.185.xxx.xxx 未訂閱
終於試到成功啦,但真是十分麻煩地連結,但我有另一個問題就係的data show唔到,全部都係show "varbytes",是否因為我的mysql database是用varchar作為datatype,所以會顯示不到呢?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-08 11:12:55 IP:218.15.xxx.xxx 未訂閱
你好,找了一篇相关资料,希望能有所帮助: --------- 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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-04-08 12:29:56 IP:203.185.xxx.xxx 未訂閱
很多謝你的回答,問題已解決,但還是有一個少問題,就是顯示不到真正的資料,我找到record,但只顯示"varbyte",這是因為我的database是用varchar為data type,請問有什麼方法解決?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-04-08 20:33:18 IP:211.20.xxx.xxx 未訂閱
引言: 請教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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-04-10 01:43:22 IP:211.75.xxx.xxx 未訂閱
這好像不是語言問題 , 據我經驗你如用MySQL資料庫 , 可能讀不到VARCHAR , 試將VARCHAR 改成 CHAR 看看
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-04-13 12:03:40 IP:203.185.xxx.xxx 未訂閱
多很謝各位的意見 小弟有個同事,他用了array drawgrid的方法,每次當tsqlquery,找到record後放人個array到,然後draw番落個draw grid,咁就可以保證唔會keep connect,因為db grid個的好似如果keep connection=false就會吾work
系統時間:2024-07-01 10:44:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!