VB.NET question

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

VB.NET question

Сообщение Alexan »

Вывожу в DataGrid некоторые значения, часть из их которых нули. Как мне сделать чтобы вместо нулей ничего ве выводилось (пустые ячейки), не перебирая все значения. Поигрался с DataSet.Expression, что-то ничего не получается.
Барабан
Частый Гость
Сообщения: 10
Зарегистрирован: 03 мар 2003, 11:04

Re: VB.NET question

Сообщение Барабан »

1. используй IIF функцию в DataColumn.Expression проперти.
2. Сделай свой рендеринг через ItemDataBound event. например.
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Re: VB.NET question

Сообщение Alexan »

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

DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf("Sale" = "0", "", "Sale")
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Re: VB.NET question

Сообщение Alexan »

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

DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf("Sale" = "0", "", "Sale")
Рано радовался. После проверки оказалось, что IIf("Sale" = "0", "", "Sale") всегда выдает "Sale", даже когда оно равно нулю. Что тут неправильно?
pank
Пользователь
Сообщения: 75
Зарегистрирован: 26 фев 2003, 20:19
Откуда: toronto

Сообщение pank »

А в типах не ошибся
0 и "0" - это не одно и тоже
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

pank писал(а):А в типах не ошибся
0 и "0" - это не одно и тоже
Когда ставлю без кавычек дает ошибку:
Input string was not in a correct format.
pank
Пользователь
Сообщения: 75
Зарегистрирован: 26 фев 2003, 20:19
Откуда: toronto

Сообщение pank »

А если так:
DataSet11.Tables("Table1").Columns("Sale1").Expression = IIf(Sale = 0, "", "Sale")
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

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

Name 'Sale' is not declared.

Это же не переменная, а имя колонки. Оно должно быть в кавычках.
Аватара пользователя
Смайл
Пользователь
Сообщения: 135
Зарегистрирован: 18 фев 2003, 10:38

Сообщение Смайл »

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')"
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение 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.
pank
Пользователь
Сообщения: 75
Зарегистрирован: 26 фев 2003, 20:19
Откуда: toronto

Сообщение pank »

У тебя имя колонки "sale" or "sale1"?

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

ps
а кавычки я забыл в предыдущем моем постинге.
Thanks Смайл
Барабан
Частый Гость
Сообщения: 10
Зарегистрирован: 03 мар 2003, 11:04

Сообщение Барабан »

А так?

DataSet11.Tables("Table1").Columns("Sale1").Expression = "IIf(Sale = '0', '', 'Sale')"
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

Барабан писал(а):А так?

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

Мне кажется, я уже все варианты перепробовал. Я все-таки думаю, что кавычек перед iif не надо. Именно Sale должно быть в кавычках, так как мы сравниваем с нулем не число, а колонку. Или дело в типах данных (в БД (Access) она имеет тип Currency) или вообще нельзя сравнивать целиком колонку, а надо делать цикл по каждому значению. Наверно при сравнении колонок True получается только когда колонки идентичны.
Alexan
Завсегдатай
Сообщения: 213
Зарегистрирован: 17 фев 2003, 16:05
Откуда: NN - Montreal - Charlottetown - Montreal

Сообщение Alexan »

pank писал(а):У тебя имя колонки "sale" or "sale1"?

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

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