VB6 Как вставить в таблицу из набора результатов, как это, когда поле пустое - PullRequest
0 голосов
/ 17 декабря 2018
CREATE TABLE [dbo].[TABLE001]
    (
    [T001_int] [int] NULL,
    [T001_char] [char](100) NULL,
    [T001_decimal] [decimal](5, 0) NULL
    )

CREATE TABLE [dbo].[TABLE002]
    (
    [T002_int] [int] NULL,
    [T002_char] [char](100) NULL,
    [T002_decimal] [decimal](5, 0) NULL
    )

INSERT INTO TABLE002 VALUES (NULL, NULL, NULL)

ОПРЕДЕЛЕНИЕ ТАБЛИЦЫ ВЫШЕ

    Dim strQuery    As String
    Dim rdoEnv      As rdoEnvironment
    Dim rdoCon      As rdoConnection
    Dim rdoRS       As rdoResultset

    strQuery = ""
    strQuery = strQuery & " SELECT * FROM TABLE002"

    Set rdoEnv = rdoEnvironments(0)
    Set rdoCon = rdoEnv.OpenConnection("", rdDriverNoPrompt, True, MyCon)
    Set rdoRS = rdoCon.OpenResultset(strQuery, rdOpenKeyset, rdConcurReadOnly)

    Do Until rdoRS.EOF = True

        strQuery = ""
        strQuery = strQuery & " INSERT INTO TABLE001"
        strQuery = strQuery & " VALUES"
        strQuery = strQuery & " (" & rdoRS!T002_int & ", '" & rdoRS!T002_char & "'," & rdoRST002_decimal & ")"

        rdoCon.Execute (strQuery)
        rdoRS.MoveNext

    Loop

Выше мой код VB6

Когда rdoRS! T002_int = null, возникает ошибка

Когда rdoRS! T002_char = null, вставляется как ''

Когда rdoRS! T002_decimal = null, возникает ошибка

Я хочу вставить NULL как NULL

Как это исправить

Пожалуйста, не говорите мне, что я не должен этого делать.

Я хочу знать, как вставить как ноль.

1 Ответ

0 голосов
/ 17 декабря 2018

Вы можете попробовать это:

Dim int_value As String
Dim str_value As String
Dim dec_value As String

int_value = IIf(IsNull(myrs!T002_int), "NULL", CStr(myrs!T002_int))
str_value = IIf(IsNull(myrs!T002_char), "NULL", "'" & myrs!T002_char & "'")
dec_value = IIf(IsNull(myrs!T002_decimal), "NULL", CStr(myrs!T002_decimal))

strQuery = ""
strQuery = strQuery & " INSERT INTO TABLE001"
strQuery = strQuery & " (T001_int, T001_char, T001_decimal)"
strQuery = strQuery & " VALUES"
strQuery = strQuery & " (" & int_value & ", " & str_value & ", " & dec_value & ")"

Некоторые примечания:

  • При вставке всегда указывайте столбцы.
  • Вы получите ошибку вв случае, если столбец T002_char содержит кавычку или что-то еще, что портит синтаксис SQL.
    Лучше использовать подготовленные операторы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...