提问人:roy 提问时间:7/29/2023 最后编辑:marc_sroy 更新时间:7/30/2023 访问量:73
如何在 VB.NET 中使用 Dapper 和 MS-Access 数据库更改 datagridview 中 SQL 的值
How to change value from SQL in datagridview using Dapper with MS-Access database in VB.NET
问:
我想更改 datagridview 中显示的值是否有解决方案,对于实际的数据库记录信息,如果并集,则有 100,000 个,但每个表的列“WRH”的每个值只有一个值,除非有一个表有 2 个这样的值。
我要更改的值信息如下:
001 BECOMES A
002 BECOMES B
003 BECOMES C
或者有其他解决方案请指导我
谢谢
Const constrA = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TABLEA.accdb;Persist Security Info=False;"
Const constrB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TABLEB.accdb;Persist Security Info=False;"
Const constrC = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TABLEC.accdb;Persist Security Info=False;"
Function GetUsers(constr As String) As IEnumerable(Of Users)
Using con As OleDbConnection = New OleDbConnection(constr)
Return con.Query(Of Users)("SELECT * From Users Where WRH ='001' OR WRH ='002' OR WRH ='003'")
End Using
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DataGridView1.DataSource = GetUsers(constrA).Union(GetUsers(constrB)).Union(GetUsers(constrC)).ToList
End Sub
Public Class Users
Public Property Id() As Integer
Public Property Firstname() As String
Public Property LastName() As String
Public Property WRH() As String
End Class
表A :Users
编号 | 名字 | 姓氏 | WRH公司 |
---|---|---|---|
1 | TEST1000 | 1000测试 | 001 |
2 | TEST2000 | 2000测试 | 001 |
表B:Users
编号 | 名字 | 姓氏 | WRH公司 |
---|---|---|---|
1 | TEST3000 | 3000测试 | 002 |
2 | TEST4000 | 4000测试 | 002 |
表C:Users
编号 | 名字 | 姓氏 | WRH公司 |
---|---|---|---|
1 | TEST5000 | 5000测试 | 003 |
2 | TEST6000 | 6000测试 | 004 |
datagridview 中的预期结果
名字 | 姓氏 | WRH公司 |
---|---|---|
TEST1000 | 1000测试 | 一个 |
TEST2000 | 2000测试 | 一个 |
TEST3000 | 3000测试 | B |
TEST4000 | 4000测试 | B |
TEST5000 | 5000测试 | C |
答:
0赞
roy
7/30/2023
#1
我有 2 个答案。
下面的第一个答案基于链接 定期根据条件更改 datagridview 单元格颜色!
仅适用于小记录
Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
For Each Myrow As DataGridViewRow In DataGridView1.Rows 'Here 2 cell is target value and 1 cell is Volume
If Myrow.Cells(3).Value.ToString() = "001" Then
Myrow.Cells(4).Value = "A"
End If
If Myrow.Cells(3).Value.ToString() = "002" Then
Myrow.Cells(4).Value = "B"
End If
If Myrow.Cells(3).Value.ToString() = "003" Then
Myrow.Cells(4).Value = "C"
End If
Next Myrow
End Sub
下面的第二个答案基于链接 多个 IIF 标准定期访问!
仅适用于大型记录
"SELECT ID,Firstname,LastName,WRH,IIF([WRH] ='001','A',IIF([WRH] ='002','B',IIF([WRH] ='003','C'))) AS WRH_Name From Users Where WRH ='001' OR WRH ='002' OR WRH ='003'"
评论
CellFormatting
CharW([Column Value as Integer] + 64)
CellFormatting event (something like CharW([Column Value as Integer] + 64))
you need a mapper (e.g, a Dictionary<string, string>)