Sql server 插入行并在字段中增加值
我无法从一个表插入到另一个表: 我想在一个表中插入另一个表中的多行,插入时,增加目标表中int字段的值。 代码是这样的:Sql server 插入行并在字段中增加值,sql-server,vb.net,insert,Sql Server,Vb.net,Insert,我无法从一个表插入到另一个表: 我想在一个表中插入另一个表中的多行,插入时,增加目标表中int字段的值。 代码是这样的: Dim sqlCmd As New SqlClient.SqlCommand() Dim conMain As New SqlClient.SqlConnection() Dim strSQL As String = "INSERT INTO AvizeCorn (Seria, DataMAx, NrAviz, Agent, Școala, D
Dim sqlCmd As New SqlClient.SqlCommand()
Dim conMain As New SqlClient.SqlConnection()
Dim strSQL As String =
"INSERT INTO AvizeCorn
(Seria, DataMAx, NrAviz, Agent, Școala, Data,
Buc, ZileLivrare, Luna, Produs, Anul)
SELECT @Seria, @Data+Zile as DataMax, @NrAviz, Agent, Școala, @Data, Zile*BucSt as Buc,
Zile as ZileLivrare, @Luna, @Produs,@Anul
FROM AgențiȘcoliCorn"
Try
conMain.ConnectionString = "Data Source=cristib\sqlexpress;Initial Catalog=Avize Măr și Corn;Integrated Security=True"
sqlCmd.Connection = conMain
conMain.Open()
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = strSQL
With sqlCmd.Parameters
.AddWithValue("@Seria", "AGP")
.AddWithValue("@NrAviz", DataSetCorn.AvizeCorn.Compute("Max(NrAviz)", "") + 1)
.AddWithValue("@Data", Convert.ToDateTime(DataCorn.Text))
.AddWithValue("@Luna", MonthName(Month(DataCorn.Text)))
.AddWithValue("@Produs", Produs.Text)
.AddWithValue("@Anul", Year(DataCorn.Text))
End With
sqlCmd.ExecuteNonQuery()
conMain.Close()
MsgBox("Avizele au fost create cu succes.")
Catch ex As Exception
MsgBox(ex.Message)
End Try
我的问题是NrAviz的
我想检查最大值,并为表中插入的每一行增加1。
在我的代码中,它为表中插入的每一新行插入相同的值
请帮忙,因为我对sql和vb.net完全是新手您可以将Max(NrAviz)
放入SELECT,它将获取记录以插入它们。您可以使用行号
Dim sqlCmd As New SqlClient.SqlCommand()
Dim conMain As New SqlClient.SqlConnection()
Try
conMain.ConnectionString = "Data Source=cristib\sqlexpress;Initial Catalog=Avize Măr și Corn;Integrated Security=True"
sqlCmd.Connection = conMain
conMain.Open()
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = strSQL
Dim strSQL As String = "INSERT INTO AvizeCorn (Seria, DataMAx, NrAviz, Agent, Școala, Data,
Buc, ZileLivrare, Luna, Produs, Anul)
SELECT @Seria, @Data+Zile as DataMax, (SELECT MAX(NrAviz) from AvizeCorn) + row_number() over (order by ID), Agent, Școala, @Data, Zile*BucSt as Buc,
Zile as ZileLivrare, @Luna, @Produs,@Anul
FROM AgențiȘcoliCorn"
sqlCmd.CommandText = strSQL
With sqlCmd.Parameters
.AddWithValue("@Seria", "AGP")
.AddWithValue("@Data", Convert.ToDateTime(DataCorn.Text))
.AddWithValue("@Luna", MonthName(Month(DataCorn.Text)))
.AddWithValue("@Produs", Produs.Text)
.AddWithValue("@Anul", Year(DataCorn.Text))
End With
sqlCmd.ExecuteNonQuery()
conMain.Close()
MsgBox("Avizele au fost create cu succes.")
Catch ex As Exception
MsgBox(ex.Message)
End Try
编辑
您也可以尝试使用
INSERT INTO AvizeCorn (Seria, DataMAx, NrAviz, Agent, Școala, Data, Buc, ZileLivrare, Luna, Produs, Anul)
SELECT @Seria, @Data+Zile as DataMax, MAX(NrAviz)+1 FROM AvizeCorn, Agent, Școala, @Data, Zile*BucSt as Buc, Zile as ZileLivrare, @Luna, @Produs,@Anul
FROM AgențiȘcoliCorn
您可以将Max(NrAviz)
放入正在获取记录以插入它们的SELECT中。您可以使用行号
Dim sqlCmd As New SqlClient.SqlCommand()
Dim conMain As New SqlClient.SqlConnection()
Try
conMain.ConnectionString = "Data Source=cristib\sqlexpress;Initial Catalog=Avize Măr și Corn;Integrated Security=True"
sqlCmd.Connection = conMain
conMain.Open()
sqlCmd.CommandType = CommandType.Text
sqlCmd.CommandText = strSQL
Dim strSQL As String = "INSERT INTO AvizeCorn (Seria, DataMAx, NrAviz, Agent, Școala, Data,
Buc, ZileLivrare, Luna, Produs, Anul)
SELECT @Seria, @Data+Zile as DataMax, (SELECT MAX(NrAviz) from AvizeCorn) + row_number() over (order by ID), Agent, Școala, @Data, Zile*BucSt as Buc,
Zile as ZileLivrare, @Luna, @Produs,@Anul
FROM AgențiȘcoliCorn"
sqlCmd.CommandText = strSQL
With sqlCmd.Parameters
.AddWithValue("@Seria", "AGP")
.AddWithValue("@Data", Convert.ToDateTime(DataCorn.Text))
.AddWithValue("@Luna", MonthName(Month(DataCorn.Text)))
.AddWithValue("@Produs", Produs.Text)
.AddWithValue("@Anul", Year(DataCorn.Text))
End With
sqlCmd.ExecuteNonQuery()
conMain.Close()
MsgBox("Avizele au fost create cu succes.")
Catch ex As Exception
MsgBox(ex.Message)
End Try
编辑
您也可以尝试使用
INSERT INTO AvizeCorn (Seria, DataMAx, NrAviz, Agent, Școala, Data, Buc, ZileLivrare, Luna, Produs, Anul)
SELECT @Seria, @Data+Zile as DataMax, MAX(NrAviz)+1 FROM AvizeCorn, Agent, Școala, @Data, Zile*BucSt as Buc, Zile as ZileLivrare, @Luna, @Produs,@Anul
FROM AgențiȘcoliCorn
表中现在有多少行,最好使用IDENTITY或SEQUENCE。计算像这样的序列a)在多用户环境中可能不起作用,b)将是资源密集型的。您需要它做什么?在这个新表中,我需要一个字段(NrAviz)进行递增,因为它类似于一个ID字段。但是我需要它不同于已经存在于我的表中的ID字段,它是identity。那序列呢?如何使用它?表中现在有多少行您最好使用IDENTITY或SEQUENCE。计算像这样的序列a)在多用户环境中可能不起作用,b)将是资源密集型的。您需要它做什么?在这个新表中,我需要一个字段(NrAviz)进行递增,因为它类似于一个ID字段。但是我需要它不同于已经存在于我的表中的ID字段,它是identity。那序列呢?如何使用它?更好的方法…但现在它说“无效列名”NrAviz“.ThenNrAviz
不是AgențiȘcoliCorn
表中的一列。Nraviz
列所属的表名是什么?是不是AvizeCorn
?AvizeCorn。好啊我确实修改了,但现在我到了我刚开始的地方。它插入具有相同NRAviz值的2行。最高+1。不会增加下一行的值。我已经更新了答案,从AvizeCorn
表中检索Max(NrAviz)
,如何在插入第一行后重新查询Max值,然后添加1?更好的方法…但现在它显示“无效列名”NrAviz“.ThenNrAviz
不是AgențiȘcoliCorn
表中的一列。Nraviz
列所属的表名是什么?是不是AvizeCorn
?AvizeCorn。好啊我确实修改了,但现在我到了我刚开始的地方。它插入具有相同NRAviz值的2行。最高+1。不增加下一行的值。我已更新了答案,从AvizeCorn
表中检索Max(NrAviz)
,插入第一行后如何重新查询Max值,然后添加1?