思路一:
如何将dbgrid1 中查询出来的数据 ,按照需要整行拖拽到dbgrid2中,然后控制dbgrid2提交 到数据库中。dbgrid1和dbgrid2结构相同,用adoquery连接sql================================================
另一种思路:
或者单个dbgrid1中可以整行特殊标识出需要的数据,最后提交到数据库表中。==================================================大家给个代码的大概吧, 思路已经有了。
如何将dbgrid1 中查询出来的数据 ,按照需要整行拖拽到dbgrid2中,然后控制dbgrid2提交 到数据库中。dbgrid1和dbgrid2结构相同,用adoquery连接sql================================================
另一种思路:
或者单个dbgrid1中可以整行特殊标识出需要的数据,最后提交到数据库表中。==================================================大家给个代码的大概吧, 思路已经有了。
解决方案 »
- 不正常地定义参数对象,提供了不一致或不完整的信息
- 请jinjazz(近身剪(N-P攻略)) 近来接分
- 关于软件工程硕士的问题
- 紧急求救:有关F2Book的标题部分无法打印问题
- 关于建立网络连接的问题?
- 高手求救啊。。分布式结构DCOM倒底怎么用啊
- 大家帮看看我要实现这个功能用什么控件好?
- 请您无论如何进来看看(也许这个问题对您来说是小菜,可是我却是想破了头)
- 用query查询,如何只显示刚刚才创建的那条记录,怎么实现?
- 怎样用程序打开TADOConnection 的ConnectionString 设置窗体
- 为什么winXP不支持OpenDialog1?只要用OpenDialog1就出错,用win2000没问题
- 求助 各位大侠 请问如何能构将串口通信过来的数据实时的录入数据表中
拖动完成后写代码也很简单,就执行一个sql语句: insert into newtable values(select * from oldtable where id =?); 最后刷新grid2的adoQuery就行了吧。
反正我超级不喜欢DBGrid控件。建议你能自己写就自己写。对于数据的输入问题,我宁可写一个单独的FORM,然后使用DBEdit来完成。因为DBGrid随便一输入,就涉及到N多的问题,什么BeforePost,AfterPost,什么乱七八糟的。恶心死了。而且如果想写颜色更改,整行选择,以及加Checkbox等等等等,能把你写死掉。我一般使用dxTreeList控件,又清爽,又简单,又能排序,什么都在自己的控制中。就是修改的时候麻烦一点。当然,使用数据的操作方式不同,有人就喜欢直接在grid中改,也挺简单的就是了。
第二个问题也是一个sql语句的问题。
首先就是选中。你随便写,就是一个Color的问题。点击一个记录改颜色,再点击该记录再改回来。就完成选中的功能了。不过改颜色恶心死你就是了。因为你要想办法记住要更改颜色的记录。
然后记住记录的ID(如果有ID的话,应该有)后,执行Sql语句:
insert into newtable select * from oldtable where id in(1,2,3,4,5,8……)就行了。
反正很恶心就是了。不难,和烦
第一个,因为是多表联合查出的数据用dbgrid查出来的
第2个,拖动后,在dbgrid2中要能整行删除,添加,最后确定了才能提交。
后面的改颜色我曾经也试验过,可是,如何记住标记了颜色的记录不简单啊我见过又人做出过,不过没有源代码
首先设置DBGrid的DefaultDrawing属性设置为False。然后在DBGrid的OnDrawDataCell事件写如下代码:
var
c: TColor;
begin
c:=DBGrid1.Canvas.Brush.Color; //保存原来的颜色。
if Table1.FieldByName('Area').AsInteger>1000000 then //如果面积超过1000000,则将整行设置为红色
DBGrid1.Canvas.Brush.Color:=clRed else
DBGrid1.Canvas.Brush.Color:=c;
DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end由于是整行更改颜色,因此省事的做法是跟Table,因为没有办法来保存标记。呵呵……。凑合用吧
建议你使用devExpress控件组,里面有一个TMemData控件,是在内存中建立虚拟表的功能。你把数据拖动到DBGrid2中的时候,把拖动的数据添加到TMemData控件中就可以了。当然DBGrid2的DataSource的DataSet要使用TMemData控件。这个控件和Table控件一样,不过就是在内存中虚拟一个表而已。
最后检查TMemData中的数据,想删除就删除,想提交就提交。
对于标志数据的问题,因为你是Query交叉搜索出来的。因此就比较麻烦了。
因此你只能做一个变量,来保存所有选择的数据。一般情况下用动态数组,或者其他的,保存你选中的数据的某个字段值(一般应该是ID,每个表都应该有的),然后在OnDrawData的时候检查是否是标志的数据。如果是,则改颜色。
很麻烦就是了。