Таблица SQL-сервера может иметь два столбца идентификационных данных?

Цель: воспроизвести рабочую формулу рабочего листа в VBA

=INDEX('C:\Users\Desktop\[BOOK1.xlsx]Sheet1'!$J:$J, MATCH(A2, 'C:\Users\Desktop\[BOOK1.xlsx]Sheet1'!$W:$W,0))

. Вот прогрессивная конструкция, использующая несколько методов. Проверьте окно Immediate VBE для выхода debug.print.

'assumes that BOOK1 points to a workbook at this point
Dim bcklog1 As Worksheet
Set bcklog1 = BOOK1.Worksheets("backlog1")

Dim result As Variant, test As Variant
Dim frml As String, match_row As Long

'first we construct and evaluate the MATCH portion
frml = "match(A2, " & bcklog1.Range("W:W").Address(external:=True) & ", 0)"
Debug.Print frml
match_row = Evaluate(frml)
Debug.Print match_row

'next we build the remainder of the INDEX/MATCH around the match potion constructed earlier
frml = "index(" & bcklog1.Range("J:J").Address(external:=True) & ", " & frml & ")"
Debug.Print frml
result = Evaluate(frml)

'finally we abandon the Evaluate and use the match_row obtained earlier directly
test = Application.WorksheetFunction.Index(bcklog1.Range("J:J"), match_row, 1)
Debug.Print test

Адреса диапазона внешней рабочей книги вводятся в виде строк с параметром Range.Address с дополнительным external:=True. Это возвращает правильно отформатированную строку, включая полный путь к рабочей книге, имя рабочего листа с одинарными кавычками, если требуется, и абсолютные ссылки диапазона ячеек.

Вы могли бы написать эти конструкции строк формулы обратно на рабочий лист назначения, предварительно используя знак равенства и присвоение им свойства Range.Formula ячейки назначения . Знак равенства не является обязательным для метода Application.Evaluate .

28
задан William Hurst 8 December 2008 в 10:48
поделиться

3 ответа

CREATE TABLE [dbo].[Foo](
    [FooId] [int] IDENTITY(1,1) NOT NULL,
    [BarId] [int] IDENTITY(1,1) NOT NULL
)

возвраты

Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.

Так, нет, у Вас не может быть двух столбцов идентификационных данных. Можно, конечно, сделать первичный ключ не автоматическим инкрементом (идентификационные данные).

Редактирование: msdn:CREATE ТАБЛИЦА (Transact-SQL) и CREATE TABLE (SQL Server 2000) :

Только один столбец идентификационных данных может быть создан на таблицу.

34
ответ дан Eugene Yokota 14 October 2019 в 10:23
поделиться

Первичный ключ не должен быть столбцом идентификационных данных.

у Вас не может быть двух столбцов Identity.

Вы могли получить что-то близко к тому, что Вы хотите с триггером...

1
ответ дан Joe Ratzer 14 October 2019 в 10:23
поделиться

в SQL-сервере не возможно иметь больше чем один столбец как идентификационные данные.

0
ответ дан Mladen Prajdic 14 October 2019 в 10:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: