2011-04-06 61 views
0

我正在研究連接到SQL Server 2008 R2數據庫的VB6程序。在過去,我一直使用MSFlexGrid控件並手動填充它。然而,現在,爲我付錢的人希望我使用數據綁定的網格,這迫使我使用MSHFlexGrid控件,因爲我使用的是ADO而不是DAO。所以,我有兩個問題...VB6和數據綁定MSHFlexGrid,移動和填充列

首先,我將如何移動MSHFlexGrid中的列?例如,如果我希望第三列在網格中顯示爲第六列,那麼是否有簡單的單行代碼可以這樣做?其次,不管你信不信,我從來不需要在網格中做任何事情,除了從記錄集中顯示數據。然而,現在我有一個記錄集,其中只包含ID號的字段,這些字段引用其他文件中的記錄 - 例如,包含引用Customers表中記錄的ID號的字段,而不是包含客戶名稱的字段。最簡單的方法是讓該列顯示客戶名稱,而不是有一列顯示記錄集中的客戶ID號碼列?我以爲我讀過的地方有一種方法可以在MSHFlexGrid列中嵌入sql命令,但如果有的話我不知道該怎麼做。這是可能的,還是有更簡單的方法來做到這一點?

TIA,

凱文

回答

1

列順序通常由您的SELECT語句處理。

假設你有一個具有在水果表相關FruitID一個FruitID外鍵餡餅表:

SELECT PieID AS ID, Pie, Fruit FROM Pies LEFT OUTER JOIN Fruits 
    ON Pies.FruitID = Fruits.FruitID 

這將返回3項:ID,餡餅,水果等的順序。

在查詢/顯示操作後很少使用移動列,但是可以使用ColPosition。

+0

我建議使用LEFT OUTER JOIN來檢索*所有行的Pies,即使FruitID查找失敗(在這種情況下它將返回NULL)。人們經常使用INNER JOIN來做這件事,但是你冒着丟失記錄的風險......儘管這可能也是你的意圖。 – Bob77 2011-04-06 01:21:31

+0

我的錯誤 - 我沒有指定記錄集中數據的來源。我創建一個空白記錄集,然後用用戶輸入到多個控件(文本框,組合框等)中的數據填充它,然後將記錄集寫入表中,然後將記錄集顯示在網格中。要創建記錄集,我使用的是類似於:rs.Open「Select * from 1 = 2的項目。因此,儘管我可以,而不是使用*,指定此語句中的字段,因此設置它們的順序,我仍然被困在一些網格字段中顯示ID號碼,我應該如何解決這個問題呢? – Kevin 2011-04-06 03:20:43

1

哇! VB6 ....回到未來! :-)

您可以移動列using the ColPosition Property

本文介紹瞭如何你可以設置網格以display hierarchical data.

如果你只是想在同一行作爲主要的數據顯示客戶名稱,則是可行的,以及通過剛剛創建適當的SQL你數據源。對於這個問題,你可以用同樣的方法來控制列順序。

現在,考慮升級到.Net怎麼樣?開個玩笑.....不,我不是。好。也許,我是。 :-)

+0

我的錯誤 - 我沒有指定記錄集中數據的來源。我創建一個空白記錄集,然後用用戶輸入到多個控件(文本框,組合框等)中的數據填充它,然後將記錄集寫入表中,然後將記錄集顯示在網格中。要創建記錄集我正在使用類似於:rs.Open「Select * from Projects where 1 = 2」。因此,雖然我可以,而不是使用*,指定這個語句中的字段,因此設置他們的順序,我仍然堅持顯示在一些網格字段中的ID號碼。我應該如何解決這個問題呢? – Kevin 2011-04-06 06:05:34

+0

你想隱藏字段嗎?你也可以這樣做。查看ColIsVisible屬性。這裏是MSDN上MSHFlexGrid的鏈接。他們有鏈接到所有的屬性,方法等等。http://msdn.microsoft.com/en-us/library/aa228851(VS.60)。aspx – klabranche 2011-04-06 14:15:03