插入行并增加字段中的值
insert rows and increase a value in a field
我无法从一个 table 插入到另一个:
我想从另一行插入 table 多行,插入时,增加目标 table 中的 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, 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
我想检查最大值并在 table 中插入的每一行增加 1。
使用我的代码,它为 table.
中插入的每个新行插入相同的值
请帮忙,因为我是 sql 和 vb.net
的新手
您可以将 Max(NrAviz)
放入正在获取记录以插入它们的 SELECT 中。您可以使用 ROW_NUMBER
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
我无法从一个 table 插入到另一个: 我想从另一行插入 table 多行,插入时,增加目标 table 中的 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, 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
我想检查最大值并在 table 中插入的每一行增加 1。 使用我的代码,它为 table.
中插入的每个新行插入相同的值请帮忙,因为我是 sql 和 vb.net
的新手您可以将 Max(NrAviz)
放入正在获取记录以插入它们的 SELECT 中。您可以使用 ROW_NUMBER
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