![]() |
|
Модераторы: gambit |
![]()
|
|
| Colloseum |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Почему следующий код не работает, БД Аксес 2003.:
Необходимо отчет сделать. Но само собой немного это обработать нужно, не вываливать же сырые данные. Здесь поле District повторяется раз по 10-20, я его if'ом вылавливаю когда оно изменяется в первый раз и вывожу (в запросе есть строка ORDER BY District). Сделал такое через string переменную, работает на ура, но сравнивать строки ведь дольше!? Да и может же понадобится сложить два любых значения. Неужели надо через ExecuteScalar делать, но так-же неудобно? |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Colloseum,
1. Какая именно ошибка происходит? 2. Какой тип у поля District в таблице? 3. И наконец, не совсем понятно, чего ты пытаешься добиться |
|||
|
||||
| Colloseum |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
1. Какая именно ошибка происходит?
Исключение. Вот еще из консоли вывод Unhandled Exception: System.InvalidCastException: Specified cast is not valid. at InWORDProject3.Class.Main(String[] args) in c:\Documents and ... 2. Какой тип у поля District в таблице? Целое и реально в диапазоне от 1 до 113. 3. И наконец, не совсем понятно, чего ты пытаешься добиться Значит поподробнее.
Номеру District соответствует ФИО или район из другой таблицы. Т.К. это я отчет делаю то ессесно хочу чтоб выводилось все это красиво. Значить логика такая name до цикла содержит какое-то значение (любое лишь бы не совпадало с табличным). Когда начинается считывание данных то новой переменной name2 присваевается первое значение District т.е. 1 if (name != name2) - проверяет не совпадают ли раз не совпадает, то выводим ФИО или район из другой таблицы по вкусу. И присваеваем 1 к name
При втором проходе name = name2 и ФИО или район не пишем до тех пор пока District не изменится на 2. Если так то работать будет, но наверное будет медленнее.
Да и мне кажется, что для другого отчета нужно будет уже складывать два соседних поля перед выводом. Это сообщение отредактировал(а) Colloseum - 8.8.2006, 11:27 |
||||||
|
|||||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 2 Всего: 186 |
Сомневаюсь, что так уж медленнее будет. Ведь с твоим вариантом каждый раз строка должна парситься в число, что занимает определённое время. Но если очень надо -- попробуй заменить приведение к int вызовом Convert.ToInt32(), ибо строку нельзя привести к числу, её можно сконвертировать
Добавлено @ 11:38 Также можно вызвать int.Parse(), это не имеет особого значения. Добавлено @ 11:40 Если я не ошибаюсь, по-видимому, в БД эта колонка имеет тип строки, а не числа |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 4 Всего: 61 |
Все понятно. Единственное замечание. Что мешает сделать запрос таким:
И выводить сразу dr["DistrictName"] ? Думаю, что в данной задаче заниматься оптимизацией сравнения интов или строк не имеет смысла. Все равно вывод на консоль по сравнению с этим всем тормозит не по детски |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |