Страница 1 из 1

VB.NET question

Добавлено: 10 мар 2003, 21:31
Alexan
Вывожу в DataGrid некоторые значения, часть из их которых нули. Как мне сделать чтобы вместо нулей ничего ве выводилось (пустые ячейки), не перебирая все значения. Поигрался с DataSet.Expression, что-то ничего не получается.

Re: VB.NET question

Добавлено: 11 мар 2003, 05:36
Барабан
1. используй IIF функцию в DataColumn.Expression проперти.
2. Сделай свой рендеринг через ItemDataBound event. например.

Re: VB.NET question

Добавлено: 11 мар 2003, 12:22
Alexan
Барабан писал(а):1. используй IIF функцию в DataColumn.Expression проперти.
2. Сделай свой рендеринг через ItemDataBound event. например.
Спасибо. Заработало. Вставил строчку:

DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf("Sale" = "0", "", "Sale")

Re: VB.NET question

Добавлено: 11 мар 2003, 20:25
Alexan
Alexan писал(а):
Барабан писал(а):1. используй IIF функцию в DataColumn.Expression проперти.
2. Сделай свой рендеринг через ItemDataBound event. например.
Спасибо. Заработало. Вставил строчку:

DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf("Sale" = "0", "", "Sale")
Рано радовался. После проверки оказалось, что IIf("Sale" = "0", "", "Sale") всегда выдает "Sale", даже когда оно равно нулю. Что тут неправильно?

Добавлено: 11 мар 2003, 20:35
pank
А в типах не ошибся
0 и "0" - это не одно и тоже

Добавлено: 11 мар 2003, 20:40
Alexan
pank писал(а):А в типах не ошибся
0 и "0" - это не одно и тоже
Когда ставлю без кавычек дает ошибку:
Input string was not in a correct format.

Добавлено: 11 мар 2003, 21:09
pank
А если так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf(Sale = 0, "", "Sale")

Добавлено: 11 мар 2003, 21:16
Alexan
pank писал(а):А если так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf(Sale = 0, "", "Sale")
В этом случае дает ошибку при компиляции:

Name 'Sale' is not declared.

Это же не переменная, а имя колонки. Оно должно быть в кавычках.

Добавлено: 11 мар 2003, 21:32
Смайл
Alexan писал(а):
pank писал(а):А если так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf(Sale = 0, "", "Sale")
В этом случае дает ошибку при компиляции:

Name 'Sale' is not declared.

Это же не переменная, а имя колонки. Оно должно быть в кавычках.
Блин. Матчасть бум читать?
Объявлено как:
Public Property Expression As String
Правильно надо так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = "IIf(Sale = 0, '', 'Sale')"

Добавлено: 11 мар 2003, 21:37
Alexan
Смайл писал(а):
Alexan писал(а):
pank писал(а):А если так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf(Sale = 0, "", "Sale")
В этом случае дает ошибку при компиляции:

Name 'Sale' is not declared.

Это же не переменная, а имя колонки. Оно должно быть в кавычках.
Блин. Матчасть бум читать?
Объявлено как:
Public Property Expression As String
Правильно надо так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = "IIf(Sale = 0, '', 'Sale')"
Тогда дает ошибку:
Cannot convert value 'Sale' to Type: System.Double.

Добавлено: 12 мар 2003, 06:27
pank
У тебя имя колонки "sale" or "sale1"?

Это ошибка о том, что ты пытаешся сравнить строку с цифрой (double).
Причем строка не может быть конвертирована в цифру.
Скорее всего это null.

ps
а кавычки я забыл в предыдущем моем постинге.
Thanks Смайл

Добавлено: 12 мар 2003, 06:44
Барабан
А так?

DataSet11.Tables("Table1").Columns("Sale1").Expression = "IIf(Sale = '0', '', 'Sale')"

Добавлено: 12 мар 2003, 11:10
Alexan
Барабан писал(а):А так?

DataSet11.Tables("Table1").Columns("Sale1").Expression = "IIf(Sale = '0', '', 'Sale')"
Выдает ту же ошибку:
Cannot convert value 'Sale' to Type: System.Double.

Мне кажется, я уже все варианты перепробовал. Я все-таки думаю, что кавычек перед iif не надо. Именно Sale должно быть в кавычках, так как мы сравниваем с нулем не число, а колонку. Или дело в типах данных (в БД (Access) она имеет тип Currency) или вообще нельзя сравнивать целиком колонку, а надо делать цикл по каждому значению. Наверно при сравнении колонок True получается только когда колонки идентичны.

Добавлено: 12 мар 2003, 11:14
Alexan
pank писал(а):У тебя имя колонки "sale" or "sale1"?

Это ошибка о том, что ты пытаешся сравнить строку с цифрой (double).
Причем строка не может быть конвертирована в цифру.
Скорее всего это null.

ps
а кавычки я забыл в предыдущем моем постинге.
Thanks Смайл
Колонка у меня Sale. Но я не могу написать Sale и в правой и в левой части выражения, так как при этом выдается ошибка: cross reference error. Поэтому я в DataSet создал еще одну колонку Sale1 и именно ее и показываю в DataGrid.