gpt4 book ai didi

database - 在 Visual Basic 中创建计算字段

转载 作者:搜寻专家 更新时间:2023-10-30 23:40:13 26 4
gpt4 key购买 nike

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

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

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

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

enter image description here

谁能帮我创建这个字段?该字段不需要在数据库内,但如果可以使用 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 转换成什么。因此,如果您的成绩带有小数位,则表中的 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.

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

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 的任何精度都使用相同的字节存储量。同时,我将小数位数限制为三位,从而允许四舍五入到两位小数。同时,还有足够的空间来潜在地“添加”等级(如果这应该有意义的话)到总计 999999.999

关于database - 在 Visual Basic 中创建计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com