2012-07-20 126 views
-1

我收到一个错误消息,说明列不属于表格。下面是我的查询,它非常简单。在vb.net中查询时出现问题

query = " SELECT A.COLUMN " 
     " FROM TABLE_1 A, TABLE_2 B" 
     " WHERE A.COLUMN = B.COLUMN " 

为了简单起见,我把它放到一个数据集和循环做,它工作正常。顺便通过管理工作室测试查询,它都可以正常工作。

这是有问题的:

dim new_val as string 

new_val = row("A.COLUMN") 'ERROR 

注:当我改变我的查询:

SELECT A.COLUMN **AS COLUMN1** 

然后:

new_val = row("COLUMN1") it works. 

有谁知道原因这个??也忘了注意一些列有相同的名称,这就是为什么我使用A.COLUMN。

+0

值得注意的是,您正在为您的联接使用SQL-89语法,因为这些联合已被弃用(其他原因),导致复杂联接中的歧义。你应该开始使用@LittleBobbyTables描述的语法 - 参见[这个问题](http://stackoverflow.com/questions/334201/why-isnt-sql-ansi-92-standard-better-adopted-over-ansi-89 )了解更多信息 – Basic 2012-07-20 16:02:21

回答

2

只需使用:

new_val = row("COLUMN") 

没有理由要在你的参考表后缀,只是列名。

而且,你真的应该重新编写查询中使用内部联接:

query = " SELECT A.COLUMN " 
    " FROM TABLE_1 A INNER JOIN TABLE_2 B ON A.COLUMN = B.COLUMN " 
-1

我会建议你设置问题的行断点,并在快速监视窗口中选中的列名。在这种情况下,您将能够确定列名称并调整您的代码。