Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 34

Оператор "=" не задан для тип "DBNull" и строка "1".

20.07.2011, 10:53. Показов 5025. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть цикл, который проходит по списку компаний и смотрит, если у человека есть доступ - то в чекбокслист ставит true
При заходе в программу и выборе первой записи - все работает. При попытке выбрать другую запись - прога валится с курсором на "If DS_Companies_Access.HR_SysUserCheck.Rows (0)(0) = "1" Then"

Ошибка: Оператор "=" не задан для тип "DBNull" и строка "1"

VB.NET
1
2
3
4
5
6
7
8
9
10
11
    For j = 0 To CheckedListBox2.Items.Count - 1
      CheckedListBox2.SetItemChecked(j, False)
    Next
 
    For i = 0 To DS_Companies.SY150000.Rows.Count - 1
      X = DS_Companies.SY150000.Rows(i)("SY15001")
      TA_Companies_Access.Fill(DS_Companies_Access.HR_SysUserCheck, X, LN)
      If DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) = "1" Then
        CheckedListBox2.SetItemChecked(i, True)
      End If
    Next


 Комментарий модератора 
Картинки желательно прикреплять к сообщению
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2011, 10:53
Ответы с готовыми решениями:

Строковый тип данных. ***** Задан произвольный строка, выполнить с ним следующие действия. Внимание! Не используйте дополнительную строку
Заменить все малые буквы на большие, а большие на малые. Не используйте встроенную функцию для изменения регистра.

: Строковый тип данных. ***** Задан произвольный строка, выполнить с ним следующие действия. Внимание! Не используйте дополнительную строку
Заменить все малые буквы на большие, а большие на малые. Не используйте встроенную функцию для изменения регистра.:rtfm:

Задан ступенчатый массив следующей размерности: 0 строка 5 элементов, 1 строка 3 элемента, 2 строка 8 элементов, 3 с
Задан ступенчатый массив следующей размерности: 0 строка 5 элементов, 1 строка 3 элемента, 2 строка 8 элементов, 3 строка 4...

5
197 / 189 / 15
Регистрация: 09.02.2011
Сообщений: 457
20.07.2011, 11:38
VB.NET
1
2
If (not DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) is dbnull.value) _
 andalso (DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) = "1") then
1
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 34
20.07.2011, 14:57  [ТС]
Цитата Сообщение от Bazzy Посмотреть сообщение
VB.NET
1
2
If (not DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) is dbnull.value) _
 andalso (DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) = "1") then
плохое решение)
т.к. если изменить на выше написанное, то 1 раз проходит цикл и if - работает, то на второй, тупо не отмечаются компании к которым дан доступ.
0
197 / 189 / 15
Регистрация: 09.02.2011
Сообщений: 457
20.07.2011, 15:49
ищите ошибки в логике это строчка не причем... или в базе данных поставьте значение по умолчанию (допустим 0) чтобы необходимость в проверке отпала.

TA_Companies_Access.Fill(DS_Companies_Ac cess.HR_SysUserCheck, X, LN) этой строкой вы заполняете таблицу датасета, а Вам, как я понял, надо получить единственное значение (ScalarQuery в TA)

Тем более можно исключать те компании которые не нужны уже в запросе к БД.

Лучше опишите задачу или выкладывайте весь проект иначе понять что Вы хотели сделать крайне проблематично.
0
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 34
20.07.2011, 17:17  [ТС]
Цитата Сообщение от Bazzy Посмотреть сообщение
ищите ошибки в логике это строчка не причем... или в базе данных поставьте значение по умолчанию (допустим 0) чтобы необходимость в проверке отпала.

TA_Companies_Access.Fill(DS_Companies_Ac cess.HR_SysUserCheck, X, LN) этой строкой вы заполняете таблицу датасета, а Вам, как я понял, надо получить единственное значение (ScalarQuery в TA)

Тем более можно исключать те компании которые не нужны уже в запросе к БД.

Лучше опишите задачу или выкладывайте весь проект иначе понять что Вы хотели сделать крайне проблематично.
ммм, попробую:

Есть форма, на которой расположены:
ComboBox1 - список компаний, которую смотрим на данный момент
ListBox1 - список юзеров
CheckedListBox1 - список прав
CheckedListBox2 - список компаний, где есть юзер



Структура базы сделана так, что все это хранится в разны таблицах, в зависимости от компании, т.е.
<a href='http://imglink.ru/show-image.php?id=ed04679ee8bfb647956108e45ed e8fce'> <img src='http://imglink.ru/thumbnails/20-07-11/79dc84eed2689acae5942fcdc1cafa57.jpg' alt='фотохостинг' border='0'> </a>
вот в названии таблиц прописан код компании _01 _02 и т.д... у каждой компании свой набор таблиц.
Есть таблица, с списком этих кодов и компаний:
01 - Компания01
02 - Компания02
03 - Компания03
и т.д..

Если с выводом галочек для списка прав - все понятно:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
    TA_Departament_Access.Fill(DS_Departament_Access.Access, CC, LN)
    For j = 0 To CheckedListBox1.Items.Count - 1
      CheckedListBox1.SetItemChecked(j, False)
    Next
 
    For i = 0 To DS_Departament_Access.Access.Rows.Count - 1
      For j = 0 To CheckedListBox1.Items.Count - 1
        If DS_Departament_Access.Access.Rows(i)("HR21003") = CheckedListBox1.Items(j).ToString Then
          CheckedListBox1.SetItemChecked(j, True)
        End If
      Next
    Next
и все работает замечательно, то со списком компаний не понятно,
есть процедура SQL, которая выводит 1 если такой логин найдет в данной компании @CC:
SQL
1
SELECT COUNT(*) AS [+@ACCOUNT+] FROM SYSTEM_'+@CC+' WHERE LOGIN = '+@ACCOUNT+'
Вот как это все в цикл запихнуть, чтобы при выборе в ListBox1 значения - проставлялись галочки с правами компаний?
был такой код:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
    For j = 0 To CheckedListBox2.Items.Count - 1
      CheckedListBox2.SetItemChecked(j, False)
    Next
 
    For i = 0 To DS_Companies.Companies.Rows.Count - 1
      X = DS_Companies.SY150000.Rows(i)("SY15001")
      TA_Companies_Access.Fill(DS_Companies_Access.Access, X, LN)
      If DS_Companies_Access.HR_SysUserCheck.Rows(0)(0) = "1" Then
         CheckedListBox2.SetItemChecked(i, True)
      End If
    Next
При заходе в программу, выборе логина - все проставляется верно, но при попытке выбрать другую запись - падает. Т.е. как только переключаемся с выбраной записи.
Миниатюры
Оператор "=" не задан для тип "DBNull" и строка "1".   Оператор "=" не задан для тип "DBNull" и строка "1".  
0
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 34
04.08.2011, 14:02  [ТС]
Актуальный вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2011, 14:02
Помогаю со студенческими работами здесь

В классе Строка перегрузить оператор () для приема целочисленных и дробных значений
всем привет, помогите пожалуйста с кодом на перегрузку оператора как перегрузить () - этим строку в число int и double

Трехслойная архитектура для ADO NET, возвращение DBNull и мелочи
Здравствуйте. Прочитав эту статью про трехслойную архитектуру доступа к данным, решил уже наконец научиться писать всё нормально и по...

На пространстве задан линейный оператор
Помогите решить задачи

Задан оператор отражения, найти матрицу сопряженного оператора
Пусть Oxy - декартова прямоугольная система координат на плоскости и А - оператор отражения точек плоскости относительно прямой l: ax+by=0....

Задан линейный оператор A(f). Какова размерность ядра оператора А?
Дано линейное пространство комплексных периодических функций f(x) на интервале и задан линейный оператор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru