在 Visual Basic 中创建计算字段

Create calculated field in Visual Basic

我想在数据库中的一个表中创建一个计算字段。我正在使用 visual basic 而我的 IDE 是 visual studio。

我最近使用 access 创建了相同的数据库,并在计算字段的表达式中使用了以下计算:

 (([Grade1]/10)*2)+(([Grade2]/10)*3)+(([Grade3]/10)*5)

作为第一步,我只是将代码粘贴到字段的默认值或绑定中作为远射,但出现了错误。猜猜我不允许使用现有列中的数据进行计算。

谁能帮我创建这个字段?该字段不需要在数据库内,但如果可以使用 datagridview 或类似的东西在数据库外的表单上计算它,那将是首选。

1、2 和 3 级包含从 0 到 100 的数字。

除非有人能指出正确的方向,否则我找不到任何教程?

为了获得所描述的计算字段,您应该使用以下 T-SQL 代码:

create table dbo.Enrolement
    (
     StudentID int not null,
     ModuleNUmber int not null,
     Grade1 nchar(3) not null,
     Grade2 nchar(3) not null,
     Grade3 nchar(3) not null,
     Overall as cast(((Grade1 / 10 * 2) + (Grade2 / 10 * 3) + (Grade3 / 10 * 5)) as nchar(10))
    )

但是,我不明白您为什么将成绩存储为文本。此外,您的 T-SQL 代码 需要 将文本隐式转换为数字,进行计算,然后再次将其恢复为文本。此外,在转换过程中,您没有告诉 SQL 转换成什么。所以,如果你的成绩有小数位,那么 table 中的 SELECT 将失败。

insert into dbo.Enrolement
        (
         StudentID,
         ModuleNUmber,
         Grade1,
         Grade2,
         Grade3
        )
values  (
         2, -- StudentID - int
         101, -- ModuleNUmber - int
         N'1.2', -- Grade1 - nchar(3)
         N'1.8', -- Grade2 - nchar(3)
         N'3.9'  -- Grade3 - nchar(3)
        )
select *
from dbo.Enrolement

Msg 245, Level 16, State 1, Line 17 Conversion failed when converting the nvarchar value '1.2' to data type int.

因此,如果以后要在计算中使用数字,我强烈建议您使用数字来存储成绩。这是相同的 table,但用数字代替:

create table dbo.Enrolement
    (
     StudentID int not null,
     ModuleNUmber int not null,
     Grade1 decimal(9, 3) not null,
     Grade2 decimal(9, 3) not null,
     Grade3 decimal(9, 3) not null,
     Overall as ((Grade1 / 10 * 2) + (Grade2 / 10 * 3) + (Grade3 / 10 * 5))
    )

我选择使用 decimal(9,3),因为从 1 到 9 的任何精度都使用相同的字节存储量。同时,我将小数位数限制为三位,从而允许四舍五入到两位小数。同时,潜在 "add" 等级(如果这应该有意义的话)有足够的空间达到总计 999999.999