我正在尝试使用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
函数的原因。
任何人都有任何建议可以解决这个问题吗?
答案 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