插入行并增加字段中的值

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