Ноль не следует сохранять в таблице - PullRequest
0 голосов
/ 09 января 2012

FlexGrid

При сохранении значений пустых ячеек flexgrid он сохраняется как 0 в таблице

Например

Flexgrid

ID Value1 Value2

001 1 
002 
....

Сохранение...

Запрос

With flexgrid

 insert into table1 values (NULLIF('" & .TextMatrix(i, 0) & "', '0'), NULLIF('" & .TextMatrix(i, 1) & "', '0'), NULLIF('" & .TextMatrix(i, 2) & "', '0'))

End with

Table1

ID Value1 Value2

001 1 0
002 0 0 

Он не должен позволять сохранять значения '0' в таблице, он должен сохраняться как пустой столбец.

Ожидаемый результат

Идентификатор Значение1 Значение2

001 1 
002   

Как решить проблему.

Нужна помощь

Ответы [ 2 ]

3 голосов
/ 09 января 2012

Предполагая, что ваши столбцы имеют тип int, вы отправляете пустую строку , неявно преобразуемую в ноль при сохранении .Таким образом, ваш NULLIF должен проверить на пустую строку.Ноль возникает после обработки NULLIF.

Также: Не объединять строки для построения оператора SQL.Параметриз, чтобы избежать внедрения SQL

1 голос
/ 09 января 2012

Это может быть лучше обработано на стороне сервера, например

CREATE PROCEDURE AddThing
@ID INTEGER, 
@Value1 INTEGER = NULL,
@Value2 INTEGER = NULL
AS
INSERT INTO table1 VALUES (@ID, NULLIF(@Value1, 0), NULLIF(@Value2, 0));

Затем вызовите proc из VB, используя объект Command со строго типизированными объектами Parameter,

...