以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 请高手们帮我查查代码哪里有错!!!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4225)

--  作者:gamtings
--  发布时间:2009/9/5 15:23:00
--  [求助] 请高手们帮我查查代码哪里有错!!!
在按钮中放了以下代码,第一次单击按钮正常,第二次单击就会出现错误提示“abc不存在名为“客户”的列”,请教高手,下面代码哪里有错?

Dim q As new QueryBuilder
q.TableName = "abc"
q.SelectString = "Select * From {表A}"
q.Build
With DataTables("abc")
    .DataCols.Add("日期", GetType(Date))
    .DataCols.Add("客户", GetType(String),10)
    .DataCols.Add("产品", GetType(String),10)
End with
Tables("窗口1_Table1").DataSource = DataTables("abc")
e.Form.Controls("Table1").Visible = true


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


--  作者:gamtings
--  发布时间:2009/9/5 16:12:00
--  
图片点击可在新窗口打开查看  出现错误提示就不正常了!!!
--  作者:狐哥
--  发布时间:2009/9/5 16:14:00
--  
QueryBuilder 是按条件生成查询表呀,你增加列的目的是什么?
如是要统计,你参阅:
CrossTableBuilder
DataTableBuilder
GroupTableBuilder
[此贴子已经被作者于2009-9-5 16:16:54编辑过]

--  作者:gamtings
--  发布时间:2009/9/5 16:24:00
--  
以下是引用狐哥在2009-9-5 16:14:00的发言:
QueryBuilder 是按条件生成查询表呀,你增加列的目的是什么?
如是要统计,你参阅:
CrossTableBuilder
DataTableBuilder
GroupTableBuilder
[此贴子已经被作者于2009-9-5 16:16:54编辑过]

附件是从我的系统中把出错的部份分解精简出来的,QueryBuilder是用来从SQL Server中查询数据的。 
q.SelectString = "Select ×××,×××,××× from a union Select ×××,×××,××× from b"
这样把多个表的数据查询出来并放到一个表中。增加临时列用于统计一些数据。

出错应该跟QueryBuilder没什么关系,但是找了好久也没找到哪里出了错。 

[此贴子已经被作者于2009-9-5 16:27:11编辑过]

--  作者:狐哥
--  发布时间:2009/9/5 16:30:00
--  

不好意思。刚错了,这个语句我也没搞懂。
但我认为你不能用这个查询表。

[此贴子已经被作者于2009-9-5 16:34:07编辑过]

--  作者:gamtings
--  发布时间:2009/9/5 16:32:00
--  
以下是引用狐哥在2009-9-5 16:30:00的发言:
for each dc as col in tables("abc").cols
    if dc.name = "客户" then
        Return
    end if
next

这一段的目的是什么?加在哪里?图片点击可在新窗口打开查看


--  作者:狐哥
--  发布时间:2009/9/5 16:35:00
--  
贴出你全部公式,想办法改一下
--  作者:狐哥
--  发布时间:2009/9/5 16:41:00
--  
苯办法一个:

If tables("abc").Cols.Contains("客户") Then
    Return
Else
    With DataTables("abc")
        .DataCols.Add("日期", GetType(Date))
        .DataCols.Add("客户", GetType(String),10)
        .DataCols.Add("产品", GetType(String),10)
    End with
End If
Tables("窗口1_Table1").DataSource = DataTables("abc")
e.Form.Controls("Table1").Visible = true

--  作者:gamtings
--  发布时间:2009/9/5 16:49:00
--  
以下是引用狐哥在2009-9-5 16:35:00的发言:
贴出你全部公式,想办法改一下

 
 全部贴出来不太方便,用的外部数据而且代码很长。


--  作者:gamtings
--  发布时间:2009/9/5 16:50:00
--  
以下是引用狐哥在2009-9-5 16:41:00的发言:
苯办法一个:

If tables("abc").Cols.Contains("客户") Then
    Return
Else
    With DataTables("abc")
        .DataCols.Add("日期", GetType(Date))
        .DataCols.Add("客户", GetType(String),10)
        .DataCols.Add("产品", GetType(String),10)
    End with
End If
Tables("窗口1_Table1").DataSource = DataTables("abc")
e.Form.Controls("Table1").Visible = true

 
照你的方法试过还是出现同样的错误提示。按说再次单据按钮就是一个全新的开始,为什么为出现这种提示呢?图片点击可在新窗口打开查看