Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему пишет ошибку Type mismatch / 19 сообщений из 19, страница 1 из 1
13.03.2017, 19:40
    #39418392
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Здравствуйте, скажите пожалуйста, почему пишет ошибку 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
13.03.2017, 19:45
    #39418396
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Ошибок две. Во второй и третьей строках.
...
Рейтинг: 0 / 0
14.03.2017, 12:29
    #39418784
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, помогите пожалуйста, почему не работает
...
Рейтинг: 0 / 0
14.03.2017, 13:07
    #39418825
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Строка 2. В строке для переменной i выбран совершенно дикий тип... Измените его на строковый - именно такой тип возвращает функция InputBox.

Строка 3. Какой смысл сравнивать переменную i с ТЕКСТОМ запроса? Вероятность того, что пользователь введёт в инпутбокс именно такой текст, исчезающе мала, а смысла в таком сравнении ещё меньше. Нужно сформировать строку запроса с подстановкой туда в секцию отбора введённого пользователем выражения как литерала, после чего подключиться к БД, выполнить запрос и получить набор записей в рекордсет, после чего сравнить количество возвращённых записей с нулём (или сразу запрашивать не записи, а их количество). Если не равно нулю - книга есть, иначе нет.
...
Рейтинг: 0 / 0
14.03.2017, 13:52
    #39418888
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, Спасибо!
...
Рейтинг: 0 / 0
14.03.2017, 16:08
    #39419046
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
на вопрос "ГДЕ ОНА?" на против ошибки Type mismatch обычно пишут точный адрес этой ошибки в виде файла и строки кода
...
Рейтинг: 0 / 0
14.03.2017, 17:51
    #39419156
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Roman Mejtes, ошибка Run-time error '13'
...
Рейтинг: 0 / 0
14.03.2017, 19:19
    #39419251
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Выдает ошибку <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
14.03.2017, 19:40
    #39419271
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Ну как минимум
Код: vbnet
1.
Set rst = CurrentDb.OpenRecordset("SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn = " & [i])


Хотя на самом деле сначала надо проверить, что во введённом значении действительно ISBN, а не инъекция...
...
Рейтинг: 0 / 0
14.03.2017, 19:54
    #39419279
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, да пишет ошибка '3464' несоответствие типов данных в выражении условия отбора ((
...
Рейтинг: 0 / 0
14.03.2017, 20:15
    #39419287
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
lellikaесли пишу <b>я уже дал ссылку на статью, как оформлять сообщения, в особенности ваш код. Уважайте отвечающих.
...
Рейтинг: 0 / 0
14.03.2017, 22:52
    #39419361
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Shocker.Pro, извините пожалуйста, это по невнимательности
...
Рейтинг: 0 / 0
14.03.2017, 23:56
    #39419381
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, получилось!!!!
Set rst = CurrentDb.OpenRecordset("SELECT Книги.заглавие_издания FROM Книги WHERE Книги.isbn = '" & [i] & "'")
...
Рейтинг: 0 / 0
15.03.2017, 07:38
    #39419433
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
ISBN - строковое? нафига?
...
Рейтинг: 0 / 0
15.03.2017, 12:46
    #39419823
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, чтобы по таблицам не ползать, спасибо, очень помогли !!!
...
Рейтинг: 0 / 0
15.03.2017, 13:33
    #39419903
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
lellikaчтобы по таблицам не ползатьНу не аргумент ни разу. ISBN - это 13-значное число. И самое разумное - хранить его именно в числовом типе. BIGINT (может хранить до 19 цифр) - самое оно... и компактнее, и обрабатывать (включая и проверку на корректность, кстати) проще.
...
Рейтинг: 0 / 0
15.03.2017, 13:55
    #39419944
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
Akina, да, но в этом 13-ти значном ISBN бывает предательская буква - X
...
Рейтинг: 0 / 0
15.03.2017, 14:15
    #39419965
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
lellikaв этом 13-ти значном ISBN бывает предательская буква - X
Согласно стандарту 10-значный ISBN должен конвертироваться в 13-значный, при этом контрольная цифра (которая может быть X) отбрасывается. Опять же - стандарт исключает совпадение 13-значного и конвертированного 10-значного кодов. Т.о. при вводе 10-значного ISBN (поле ввода всегда текстовое, так что проблемы не возникнет) после проверки контрольной цифры следует выполнить конвертацию и хранить в таблице БД исключительно 13-значные коды. необходимость же обратной конвертации однозначно определяется по первым трём цифрам 13-значного кода.
...
Рейтинг: 0 / 0
15.03.2017, 14:51
    #39420013
lellika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему пишет ошибку Type mismatch
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / почему пишет ошибку Type mismatch / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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