VB6和数据绑定MSHFlexGrid,移动和填充列

VB6和数据绑定MSHFlexGrid,移动和填充列,vb6,databound-controls,Vb6,Databound Controls,我正在开发一个连接到SQLServer2008R2数据库的VB6程序。在过去,我总是使用MSFlexGrid控件并手动填充它。然而,现在付钱给我的人希望我改用数据绑定网格,这迫使我使用MSHFlexGrid控件,因为我使用的是ADO而不是DAO。所以,我有两个问题 首先,如何在MSHFlexGrid中移动列?例如,如果我希望第三列显示为网格中的第六列,是否有一行简单的代码可以做到这一点 第二,信不信由你,我从来没有在网格中做过任何事情,除了显示记录集中的数据。但是,现在我有了一个记录集,其中一些

我正在开发一个连接到SQLServer2008R2数据库的VB6程序。在过去,我总是使用MSFlexGrid控件并手动填充它。然而,现在付钱给我的人希望我改用数据绑定网格,这迫使我使用MSHFlexGrid控件,因为我使用的是ADO而不是DAO。所以,我有两个问题

首先,如何在MSHFlexGrid中移动列?例如,如果我希望第三列显示为网格中的第六列,是否有一行简单的代码可以做到这一点

第二,信不信由你,我从来没有在网格中做过任何事情,除了显示记录集中的数据。但是,现在我有了一个记录集,其中一些字段只包含引用其他文件中记录的ID号,例如,一个字段包含引用Customers表中记录的ID号,而不是包含客户姓名的字段。最简单的方法是什么,而不是让一列显示记录集中的客户ID号,而是让该列显示客户名称?我想我在某个地方读到过,有一种方法可以在MSHFlexGrid列中嵌入sql命令,但如果有,我就不知道怎么做了。这是可能的,还是有更简单的方法

蒂亚


凯文

哇!VB6。。。。回到未来!:-)

可以移动列

本文展示了如何将网格设置为

如果您只想将客户名称显示在与主数据相同的行上,那么也可以通过为数据源创建适当的SQL来实现。因此,您也可以用同样的方法控制列顺序


现在,考虑升级到.Net怎么样?只是开玩笑。。。。。不,我不是。好啊我是,也许是。:-)

列顺序通常由SELECT语句处理

假设您有一个Pies表,其中有一个与水果表中的水果ID相关的水果ID外键:

SELECT PieID AS ID, Pie, Fruit FROM Pies LEFT OUTER JOIN Fruits
    ON Pies.FruitID = Fruits.FruitID
这将返回3项:ID、馅饼和水果


很少使用在查询/显示操作后移动列,但可以使用yes ColPosition。

我建议在此处使用LEFT-OUTER-JOIN来检索所有PIE行,即使FROUTID查找失败(在这种情况下,FROUT返回NULL)。人们通常使用内部连接来实现此目的,但您可能会丢失记录。。。虽然我想这也可能是你的意图。我的错误是,我没有在记录集中指定数据的来源。我正在创建一个空白记录集,然后用用户输入到多个控件(文本框、组合框等)中的数据填充它,然后将记录集写入表中,然后在网格中显示记录集。为了创建记录集,我使用了类似于:rs.Open的东西“从1=2的项目中选择*。因此,虽然我可以不使用*,而是在这个语句中指定字段,从而设置它们的顺序,但我仍然需要在一些网格字段中显示ID号。那我该怎么解决呢?我的错误-我没有在记录集中指定数据的来源。我正在创建一个空白记录集,然后用用户输入到多个控件(文本框、组合框等)中的数据填充它,然后将记录集写入表中,然后在网格中显示记录集。为了创建记录集,我使用了如下方法:rs.Open“Select*from Projects where 1=2”。因此,虽然我可以不使用*,而是在这个语句中指定字段,从而设置它们的顺序,但我仍然需要在一些网格字段中显示ID号。那我该怎么解决呢?你想隐藏字段吗?你也可以这样做。看看ColIsVisible属性。这里是指向MSDN上MSHFlexGrid的链接。它们有指向所有属性、方法等的链接。。。。