powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему пишет ошибку Type mismatch
19 сообщений из 19, страница 1 из 1
почему пишет ошибку Type mismatch
    #39418392
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, скажите пожалуйста, почему пишет ошибку Type mismatch, где она?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim i As RecordOpenOptionsEnum
i = InputBox("Введите ISBN, Проверка ввода данных")
If i = "SELECT Книги.isbn FROM Книги WHERE (((Книги.isbn)=[i]))" Then
MsgBox "Эта книга есть в базе"
Else
MsgBox "нет такой книги"
Exit Sub
End If
 
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ
Заранее спасибо
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39418396
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибок две. Во второй и третьей строках.
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39418784
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, помогите пожалуйста, почему не работает
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39418825
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка 2. В строке для переменной i выбран совершенно дикий тип... Измените его на строковый - именно такой тип возвращает функция InputBox.

Строка 3. Какой смысл сравнивать переменную i с ТЕКСТОМ запроса? Вероятность того, что пользователь введёт в инпутбокс именно такой текст, исчезающе мала, а смысла в таком сравнении ещё меньше. Нужно сформировать строку запроса с подстановкой туда в секцию отбора введённого пользователем выражения как литерала, после чего подключиться к БД, выполнить запрос и получить набор записей в рекордсет, после чего сравнить количество возвращённых записей с нулём (или сразу запрашивать не записи, а их количество). Если не равно нулю - книга есть, иначе нет.
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39418888
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Спасибо!
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419046
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на вопрос "ГДЕ ОНА?" на против ошибки Type mismatch обычно пишут точный адрес этой ошибки в виде файла и строки кода
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419156
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes, ошибка Run-time error '13'
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419251
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выдает ошибку <b>Run-time error '3061'</b> Слишком мало параметров Требуется 1

Dim rst As Recordset
Dim i As String
i = InputBox("Введите ISBN, Книга")
Set rst = CurrentDb.OpenRecordset("SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn =[i]")
If Not rst.EOF Then
While Not rst.EOF
MsgBox rst!заглавие_издания
rst.MoveNext
Wend
End If

если пишу <b> "SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn ='123'" </b>
то все работает, но мне принципиально надо чтобы данные брались из InputBox :,(
может быть дело в том, что поле isbn в таблице это счетчик, но поле текстовое
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419271
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как минимум
Код: vbnet
1.
Set rst = CurrentDb.OpenRecordset("SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn = " & [i])


Хотя на самом деле сначала надо проверить, что во введённом значении действительно ISBN, а не инъекция...
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419279
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, да пишет ошибка '3464' несоответствие типов данных в выражении условия отбора ((
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419287
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lellikaесли пишу <b>я уже дал ссылку на статью, как оформлять сообщения, в особенности ваш код. Уважайте отвечающих.
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419361
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, извините пожалуйста, это по невнимательности
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419381
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, получилось!!!!
Set rst = CurrentDb.OpenRecordset("SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn = '" & [i] & "'")
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419433
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ISBN - строковое? нафига?
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419823
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, чтобы по таблицам не ползать, спасибо, очень помогли !!!
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419903
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lellikaчтобы по таблицам не ползатьНу не аргумент ни разу. ISBN - это 13-значное число. И самое разумное - хранить его именно в числовом типе. BIGINT (может хранить до 19 цифр) - самое оно... и компактнее, и обрабатывать (включая и проверку на корректность, кстати) проще.
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419944
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, да, но в этом 13-ти значном ISBN бывает предательская буква - X
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39419965
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lellikaв этом 13-ти значном ISBN бывает предательская буква - X
Согласно стандарту 10-значный ISBN должен конвертироваться в 13-значный, при этом контрольная цифра (которая может быть X) отбрасывается. Опять же - стандарт исключает совпадение 13-значного и конвертированного 10-значного кодов. Т.о. при вводе 10-значного ISBN (поле ввода всегда текстовое, так что проблемы не возникнет) после проверки контрольной цифры следует выполнить конвертацию и хранить в таблице БД исключительно 13-значные коды. необходимость же обратной конвертации однозначно определяется по первым трём цифрам 13-значного кода.
...
Рейтинг: 0 / 0
почему пишет ошибку Type mismatch
    #39420013
lellika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо, надо бы конечно переделать

у меня заработал еще один вариант

Dim i As String
i = InputBox("Введите ISBN")
Dim a As String
a = Nz(DLookup("isbn", "Книги", "isbn ='" & [i] & "'"), 0)
If a = 0 Then

Exit Sub
Else
MsgBox " Это книга уже введена в базу "
Cancel = True
End If
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему пишет ошибку Type mismatch
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]