Member 13369800 Ответов: 1

Как получить максимальное значение из SQL и вставить его в строку данных


использование sql SERVER 2014
У меня есть таблица address содержит addID PK identity(1,1), city varchar()
клиент таблицы содержит CLNAME varchar (), clID PK, внешний ключ addID из предыдущей таблицы.
у меня есть форма, которая позволяет мне добавить новый адрес с новым клиентом
адрес добавляется правильно и автоматически дает ему новый addID (IDENTITY (1,1)), но возникает ошибка, так как addID в клиенте не вставляется автоматически
мне нужно получить максимальное значение addID из адреса таблицы и добавить его в мою строку данных в наборе данных, содержащем таблицу "клиент" , чтобы обновить базу данных

Что я уже пробовал:

sqlconn = conxn()
        Dim dset As New DataSet("client")
        Dim dadpt As New SqlDataAdapter("select * From client", sqlconn)
        dadpt.Fill(dset, "client")
        Dim dsADRS As New DataSet("adrs")
        Dim daADRS As New SqlDataAdapter("SELECT MAX(addID) FROM addres ", sqlconn)
        daADRS.Fill(dsADRS, "adrs")
        sen  = 
 

        sqlconn.Close()
 
        Dim cmdBuilder As SqlCommandBuilder = New SqlCommandBuilder(dadpt)
        Dim dr As DataRow
        dr = dset.Tables("client").NewRow()
 
        dr("name") = name
        dr("fname") = fname
      
        dr("addID") = Convert.ToDecimal(sqls)
        dset.Tables("lawyer").Rows.Add(dr)
        dadpt.Update(dset, "lawyer")

PIEBALDconsult

Я не рекомендую использовать удостоверение личности, особенно в таких случаях, как этот.
Один из вариантов-использовать вместо этого последовательность.
В любом случае вам нужно вставить родительскую строку перед дочерней.

И вообще, пожалуйста, изучите лучшие методы работы с базами данных.

1 Ответов

Рейтинг:
0

ZurdoDev

Вы не хотите выбирать MAX. Вместо этого сразу после выполнения вставки в адресную таблицу выполните

SELECT @newAddID = SCOPE_IDENTITY()  -- this gets the most recently inserted Identity number

...


INSERT INTO client (field1, ship_to_add_id, ...)
VALUES (@field1, @newAddID...)