Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Запись значения NULL в базу данных из переменной


Автор: ancheville 4.2.2011, 01:22
Есть такой код:

Код

Dim Connection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=|DataDirectory|\Results.accdb")
Dim Command As New OleDbCommand("SELECT TOP 1 Код FROM Calc_results ORDER BY Код DESC", Connection)
Dim id As Integer
Dim a1 as Single

single.tryparse(textbox1.text, a1)

        Try
            Connection.Open()
            Dim dataReader As OleDbDataReader = Command.ExecuteReader
            dataReader.Read()
            id = dataReader.GetInt32(0)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Connection.Close()
        End Try


SQL = "INSERT INTO `Calc_results` (Код, `Твход_тр`) VALUES ('" & id + 1 & "' , '" & a1 & "')"
Connection.Open()
Command = New OleDbCommand(SQL, Connection)
Command.ExecuteNonQuery()
Connection.Close()


Если ничего не написано в Textbox1  то при выполнении вышеприведенного кода в базу данных пишется не пустое значение (NULL), а ноль. В моем случае нужно, чтобы писалось NULL. Как мне это сделать?

Автор: aminiy 4.2.2011, 08:42
А если

Код

INSERT INTO 'Calc_results' (Код, 'Твход_тр') VALUES (iff ( переменная id =0, Null, переменная id ) , abcdddd)


Автор: ancheville 4.2.2011, 10:27
Цитата(aminiy @ 4.2.2011,  08:42)
А если

Код

INSERT INTO 'Calc_results' (Код, 'Твход_тр') VALUES (iff ( переменная id =0, Null, переменная id ) , abcdddd)

Я думаю, что этот код будет вставлять значение NULL в базу данных, если переменная будет равна 0. 
Мне нужно, чтобы в базу данных вставлялось значение NULL если переменная имеет NULL и значение 0 если переменная имеет значение 0.

Автор: ancheville 6.2.2011, 13:59
[QUOTE=ancheville,4.2.2011,  10:27]
Цитата(aminiy @ 4.2.2011,  08:42)
А если

Код

INSERT INTO 'Calc_results' (Код, 'Твход_тр') VALUES (iff ( переменная id =0, Null, переменная id ) , abcdddd)


Выдает следующую ошибку: Неопределенная функция 'iff' в выражении.

Автор: chip_and_dayl 6.2.2011, 14:09
Как вариант перед выполнением запроса проверять переменную, если она ровна пустоте, то присвоить ей "null"

Добавлено через 1 минуту и 16 секунд
Код

Выдает следующую ошибку: Неопределенная функция 'iff' в выражении.

А какой запрос был!?!

Добавлено через 5 минут и 47 секунд
А да, ф-ция не iff а iif

Автор: bopoha 8.2.2011, 22:15
Стоит писать так:
Код

Dim vValue as Variant
Dim stValue as String
Dim stSQL as String

vValue = Me.P_TEXT.Value

stSQL = "INSERT .... VALUES (" nz(vValue, "NULL") ")"



Подойдет только для числовых значений. Для текстовых необходимо обрамлять значение в ковычки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)