Sql server 若数据库表存在,则删除它,并使用自定义字段创建一个新表
我一步一步地尝试在.net中编写VBA程序 有一个简短的程序运行说明, 用户选择一个文件夹,其中包含一些库存货物的文件(通常他可以找到3个文件,过去3年中每个文件一个,但年份文件可能是2个)。 xls文件有4列(物品代码、说明、数量、总值)Sql server 若数据库表存在,则删除它,并使用自定义字段创建一个新表,sql-server,vb.net,visual-studio,Sql Server,Vb.net,Visual Studio,我一步一步地尝试在.net中编写VBA程序 有一个简短的程序运行说明, 用户选择一个文件夹,其中包含一些库存货物的文件(通常他可以找到3个文件,过去3年中每个文件一个,但年份文件可能是2个)。 xls文件有4列(物品代码、说明、数量、总值) 在VBA中,我添加一张图纸,并将每个文件的内容复制到 此新表格从第1列(“A”)I中的第2列(“B”)开始 写出相应的年份 在.net中,我已经编写了导入每个文件的代码,在本例中,我有一个mdf数据库和一个特定的表 在第二种情况下,我有一个表,有5个字段
- 在VBA中,我添加一张图纸,并将每个文件的内容复制到 此新表格从第1列(“A”)I中的第2列(“B”)开始 写出相应的年份
- 在.net中,我已经编写了导入每个文件的代码,在本例中,我有一个mdf数据库和一个特定的表
- 在VBA中,我计算不同的年份,并使用ADODB创建一个动态跨查询,我使用codart、descr作为表行,使用alla year作为列(数量+年、价值+年),然后这是结果:
- 在.net中,我知道如何计算导入的年数,所以我需要一个包含必要字段的表。我在谷歌上搜索,到处询问如何做,但我找到的每个示例都是如何从Visual Studio(Sql Server对象资源管理器)添加一个mdf表,但我需要通过编程方式通过代码来创建这个新表
有人能指导我做这件事吗 我找到了如何向self数据库添加一个表
Private Sub Add_table()
Dim qry As String = "CREATE TABLE [dbo].[tb_db] " &
"([CODPRO] NVARCHAR (50) Not NULL, [DESPRO] NVARCHAR (90) NOT NULL," &
"[2017quantity] FLOAT(53) NOT NULL, [2017value] FLOAT(53) NOT NULL, " &
"[2018quantity] FLOAT(53) NOT NULL, [2018value] FLOAT(53) NOT NULL, " &
"[2019quantity] FLOAT(53) NOT NULL, [2019value] FLOAT(53) NOT NULL)"
Using con As SqlConnection = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;")
con.Open()
Using cmd As SqlCommand = New SqlCommand(qry, con)
Try
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Using
con.Close()
End Using
End Sub
然后我添加一些检查(如果表存在,…)以
LocalDatabase
中的表test
为例:
结果是:
您可以按如下方式尝试我的代码:
Imports System.Data.SqlClient
Public Class Form1
Public constr As String = "Data Source = (localdb)\MSSQLLocalDB; Integrated Security = True ;AttachDbFileName= D:\Database\Local Database\julietest0602.mdf"
Public conn As SqlConnection
Public sda As SqlDataAdapter
Public cmd As SqlCommand
Public dt As New DataTable
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Using conn = New SqlConnection(constr)
conn.Open()
cmd = New SqlCommand("IF EXISTS(Select * From sysobjects Where Name='test') drop table test", conn)
cmd.ExecuteNonQuery()
MsgBox("Delete OK!")
cmd = New SqlCommand("CREATE TABLE test
([CODPRO] NVARCHAR (50) Not NULL, [DESPRO] NVARCHAR (90) NOT NULL,
[2017quantity] FLOAT(53) NOT NULL, [2017value] FLOAT(53) NOT NULL,
[2018quantity] FLOAT(53) NOT NULL, [2018value] FLOAT(53) NOT NULL,
[2019quantity] FLOAT(53) NOT NULL, [2019value] FLOAT(53) NOT NULL)", conn)
cmd.ExecuteNonQuery()
MsgBox("Create OK!")
cmd = New SqlCommand("Select * from test ", conn)
sda = New SqlDataAdapter(cmd)
Dim dt1 As New DataTable
sda.Fill(dt1)
DataGridView1.DataSource = dt1
End Using
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Using conn = New SqlConnection(constr)
conn.Open()
cmd = New SqlCommand("Select * from test ", conn)
sda = New SqlDataAdapter(cmd)
Dim dt1 As New DataTable
sda.Fill(dt1)
DataGridView1.DataSource = dt1
End Using
End Sub
End Class
也许你需要改写一下你的问题,我已经读了好几遍了,我仍然不确定你想要达到什么目的。是在运行时在数据库中创建表,还是来自数据库的查询为您提供了一个结果集?VBA与任何事情都有什么关系?如果您试图在vba中执行此操作,则可能需要将其添加到您的系统中tags@Hursey我的VBA程序运行正常,我希望将其转换为.net,但并不总是那么容易。但是,在这种情况下就像“当你拼命寻找眼镜,但这些是在你的头上”:我补充我的解决方案,任何建议都是欢迎的