Sheridan SSDB网格为整列设定值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sheridan SSDB网格为整列设定值相关的知识,希望对你有一定的参考价值。

我不确定我在这里做的事情是否可行。我有一个Sheridan SSDB Grid,它绑定了一个数据控件。当我填充数据控件时,网格将被填充。

但是,我必须在填充网格后手动添加其他列以显示不在数据库表中的值。

为了做到这一切,我写了这段代码:

Dim SQL As String
SQL = My_Query

dtaEmployees.DatabaseName = DB_Period_Name$
dtaEmployees.RecordSource = SQL

dtaEmployees.Refresh
dtaEmployees.Recordset.MoveFirst

grdEmployees.Redraw = True
grdEmployees.Columns.Add (4)

但是,我不确定如何填写这个新专栏。我有一个存储我需要的值的全局变量,但以下代码行都没有工作

grdEmployees.Columns(4).Value = My_Variable
grdEmployees.Columns(4).Text = My_Variable

如何设置网格中所有行的值?

编辑

按照评论中的建议后,我修改了我的代码如下。

表格加载:

Dim dbsPeriod As Database 
Dim tdfEmployees As TableDef 
Dim fldLoop As Field 

Set dbsPeriod = OpenDatabase(DB_Period_Name$) 
Set tdfEmployees = dbsPeriod.TableDefs!Ledger

AppendDeleteField tdfEmployees, "APPEND", "Location", dbText, 8 

grdEmployees.DataSource = tdfEmployees

AppendDeleteField tdfEmployees, "DELETE", "Location"

dbsPeriod.Close

AppendDeleteField子:

Private Sub AppendDeleteField(tdfTemp As TableDef, strCommand As String, _
                              strName As String, _ 
                              Optional varType, Optional varSize) 

   With tdfTemp 
    If .Updatable = False Then 
       MsgBox "Failed to initialise grid!"
       Exit Sub 
    End If 

    If strCommand = "APPEND" Then 
       .Fields.Append .CreateField(strName, varType, varSize) 
    Else 
       If strCommand = "DELETE" Then .Fields.Delete strName 
    End If 
   End With 

End Sub 

使用此代码,根本不会将任何数据加载到网格中。

答案

在删除字段之前,您没有将数据加载到RecordSet中。您需要将数据(使用SELECT查询)获取到数据结构中,网格可以将其用作.DataSource

TableDef不是数据结构,它只允许您对数据库表本身进行更改,这就是您的代码不返回任何行的原因。

以上是关于Sheridan SSDB网格为整列设定值的主要内容,如果未能解决你的问题,请参考以下文章

片段中的网格视图

excel整列怎样转换成文本格式

熊猫应用功能 - 将每一行与整列进行比较

Forge Viewer - 如何在场景中访问(或获取渲染/片段代理)克隆的网格?

在片段着色器中丢失纹理定义

ssdb操作文档