访问VB SQL语句

时间:2016-03-27 02:49:51

标签: sql vb.net ms-access

我正在尝试使用TableAdapter配置向导将Access中的数据传输到VB。我的数据库中的所有内容都设置为字符串,我需要保持这种方式。我需要将3个数字加在一起,得到每行中每个数字的平均值。我的问题是它将字符串加在一起而不是添加3个数字。

SELECT        
    ID, StudentID, FirstName, Surname, MCQ, Project, 
    Exam, [Password], IIF(ISNULL(MCQ), 'Not Completed', MCQ) AS Expr2, 
    IIF(ISNULL(Project), 'Not Completed', Project) AS Expr3, 
    IIF(ISNULL(Exam), 'Not Completed', Exam) AS Expr4, 
    IIF(ISNULL(MCQ), 1, MCQ) + IIF(ISNULL(Project), 1, Project) + IIF(ISNULL(Exam), 1, Exam) AS Expr5 
FROM            
    tblStudents

有些列将为null,这就是我使用IsNull函数的原因。

任何人都有任何建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

为什么,为什么你需要将所有内容保存为字符串?无论如何,使用CDBL()或CINT()或某些强制转换函数包装IIF()语句以强制它们为数字类型,以便添加值而不是连接它们:

SELECT
  ID, StudentID, FirstName, Surname, 
  MCQ, Project, Exam, [Password], 
  IIF(ISNULL(MCQ), 'Not Completed', MCQ) AS Expr2, 
  IIF(ISNULL(Project), 'Not Completed', Project) AS Expr3, 
  IIF(ISNULL(Exam), 'Not Completed', Exam) AS Expr4, 
  CINT(IIF(ISNULL(MCQ), 1, MCQ)) + 
     CINT(IIF(ISNULL(Project), 1, Project)) +
     CINT(IIF(ISNULL(Exam), 1, Exam) AS Expr5)) 
FROM tblStudents