Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 插入行并在字段中增加值_Sql Server_Vb.net_Insert - Fatal编程技术网

Sql server 插入行并在字段中增加值

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

我无法从一个表插入到另一个表: 我想在一个表中插入另一个表中的多行,插入时,增加目标表中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的

我想检查最大值,并为表中插入的每一行增加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“.Then
NrAviz
不是
AgențiȘcoliCorn
表中的一列。
Nraviz
列所属的表名是什么?是不是
AvizeCorn
?AvizeCorn。好啊我确实修改了,但现在我到了我刚开始的地方。它插入具有相同NRAviz值的2行。最高+1。不会增加下一行的值。我已经更新了答案,从
AvizeCorn
表中检索
Max(NrAviz)
,如何在插入第一行后重新查询Max值,然后添加1?更好的方法…但现在它显示“无效列名”NrAviz“.Then
NrAviz
不是
AgențiȘcoliCorn
表中的一列。
Nraviz
列所属的表名是什么?是不是
AvizeCorn
?AvizeCorn。好啊我确实修改了,但现在我到了我刚开始的地方。它插入具有相同NRAviz值的2行。最高+1。不增加下一行的值。我已更新了答案,从
AvizeCorn
表中检索
Max(NrAviz)
,插入第一行后如何重新查询Max值,然后添加1?