Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Несоотвествие типов данных в запросе / 22 сообщений из 22, страница 1 из 1
07.02.2013, 00:14
    #38140932
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Помогите разобраться что я делаю не так?
вот код процедуры:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub Command1_Click()
 Dim cmd, sql As String
    cmd = "Provider=microsoft.jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\balance.mdb"
    Set cn = New ADODB.Connection
        With cn
            .ConnectionString = cmd
            .Open
        End With
         sql = "select nmrah, opis from spravrah where nmrah = '*" & a & "*' and opis = '*" & b & "*'"
         Set rs = New ADODB.Recordset
                With rs
                .ActiveConnection = cn
                .Source = sql
                .Open sql, cn, adOpenKeyset, adLockOptimistic
            End With
            rs("nmrah") = Text1.Text
            rs("opis") = Text2.Text
            rs.Update
            Flex1.Refresh
             Set rs = Nothing
   cn.Close
   Set cn = Nothing
End Sub


a и b переменные уровня формы (a as integer; b as string). Во время выполнения вылетает ошибка: "несоотвествие типов данных в выражении условия отбора". Прошу, направить на путь истинный! К сообщению прилагаю пример.
...
Рейтинг: 0 / 0
07.02.2013, 00:26
    #38140936
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
А spravrah.nmrah какой тип имеет - string ?
...
Рейтинг: 0 / 0
07.02.2013, 00:30
    #38140937
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
нет, поле числовое, тоже об этом думал
...
Рейтинг: 0 / 0
07.02.2013, 00:31
    #38140938
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screamea и b переменные уровня формы (a as integer; b as string). Во время выполнения вылетает ошибка: "несоотвествие типов данных в выражении условия отбора". Прошу, направить на путь истинный! К сообщению прилагаю пример.
переменные - непричём,
сообщение ошибки от провайдера,
а смысл его в том, что числовое поле - сравниваеш как текст

sql = "select nmrah, opis from spravrah where nmrah = '*" & a & "*' and opis = '*" & b & "*'"

зы
nmrah = '*" & a & "*'
а "звёздочки" ты сюда зачем лепиш-то, если "равно" ?
...
Рейтинг: 0 / 0
07.02.2013, 00:33
    #38140941
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
qwerty112зы
nmrah = '*" & a & "*'
а "звёздочки" ты сюда зачем лепиш-то, если "равно" ?
и в АДО, подстановочный символ - % , а не *
...
Рейтинг: 0 / 0
07.02.2013, 00:37
    #38140942
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
я вот как раз не могу разобраться с запросами, 10 раз перечитываю мануал, и никак не пойму. Так как же правильно должен звучать запрос?
...
Рейтинг: 0 / 0
07.02.2013, 00:54
    #38140957
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screameнет, поле числовое, тоже об этом думалscreameя вот как раз не могу разобраться с запросами, 10 раз перечитываю мануал, и никак не пойму. Так как же правильно должен звучать запрос?
Код: vbnet
1.
sql = "select nmrah, opis from spravrah where nmrah = " & a & " and opis = '" & b & "'"
...
Рейтинг: 0 / 0
07.02.2013, 01:06
    #38140964
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
огромное спасибо за помощь, вроде стало понятно. Вот только теперь вторая проблема вылетает другая ошибка: 3021 (BOF или EOF имеет значение true), что это значит что recordset не может найти данные для замены или что!? Что снова не так?
...
Рейтинг: 0 / 0
07.02.2013, 01:43
    #38140977
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Так вы считываете данные для обработки или просто обновляете базу значениями из полей ввода?
Если обновляете, то можно использовать UPDATE.
Вроде такого:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Set cn = New ADODB.Connection
cn.Open "Provider=microsoft.jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\balance.mdb"

Set rs = New ADODB.Recordset
rs.Open "UPDATE spravrah SET nmrah = " & trim(Text1.Text) & " , opis = '" & trim(Text2.Text) & _
 "' WHERE nmrah = " & a & " and opis = '" & b & "'", cn, adOpenKeyset, adLockOptimistic

Flex1.Refresh

rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
...
Рейтинг: 0 / 0
07.02.2013, 01:55
    #38140980
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
задачу поставил такую: сделать форму редактирования таблицы из базы данных, т.е. (добавлять, изменять, удалять записи). Начал работу с редактирования записей, скачал несколько книг, вразумительного примера не нашел, то что получилось Вы видели. С апдейтом это конечно здорово, но если таблица длинная то тогда очень много полей описывать придется, может есть еще способы редактирования, я не имею ввиду мой конкретный случай, я говорю в общем, просто чтоб почитать где нибудь. может посоветуете что то конкретное из литературы по этому вопросу!?
...
Рейтинг: 0 / 0
07.02.2013, 02:34
    #38140990
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Литературы много имеется... Сеть большая Почитайте просто что-нибудь из онлайн-курсов.

А в целом - я бы вам посоветовал сразу изучить управление таблицами БД через язык SQL. Сложного ничего нет, а эффект, обычно, просто поразительный для начинающих. Знание всего трёх методов управления (INSERT, UPDATE, DELETE) и одного выбора (SELECT) позволяет реализовать 95% необходимого функционала приложения (пока промолчим про создание/модификацию структуры БД). Необходимо только ещё не забыть разобраться в дополнительных (кроме SQL-директивы) свойствах коннекта, влияющих на выполнение операций (типы блокировок и т.п.)
...
Рейтинг: 0 / 0
07.02.2013, 22:23
    #38142569
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
что то я совсем запутался, ввожу запрос точно такой же как Вы написали, и ничего не происходит, просто никакой реакции, но когда закрываю рекордсет, вылетает ошибка: 3704 операция не допускается, если объект закрыт. Что у меня опять не так!?
...
Рейтинг: 0 / 0
07.02.2013, 22:27
    #38142572
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screameчто то я совсем запутался, ввожу запрос точно такой же как Вы написали, и ничего не происходит, просто никакой реакции, но когда закрываю рекордсет, вылетает ошибка: 3704 операция не допускается, если объект закрыт. Что у меня опять не так!?
код показуйте
...
Рейтинг: 0 / 0
07.02.2013, 22:58
    #38142592
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Вложил файл с кодом того что у меня получается
...
Рейтинг: 0 / 0
07.02.2013, 23:07
    #38142601
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screameВложил файл с кодом того что у меня получается
ну и нахрена файл ?!
код скопировать/вставить - не проще ?

вообщем, если код типа этого - 13888061
то там AndreTM , "пошутил"

рекордсет открывается на запросах SELECT (точнее АДО-рекордсет можно открыть "много на чём", но НЕ на запросе UPDATE )

а запрос UPDATE выполняется методом АДО-коннекшион Execute (или АДО-комманд -Execute )

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Set cn = New ADODB.Connection
cn.Open "Provider=microsoft.jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\balance.mdb"

cn.execute "UPDATE spravrah SET nmrah = " & trim(Text1.Text) & " , opis = '" & trim(Text2.Text) & _
 "' WHERE nmrah = " & a & " and opis = '" & b & "'"

Flex1.Refresh

cn.Close
Set cn = Nothing
...
Рейтинг: 0 / 0
07.02.2013, 23:19
    #38142616
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Запускаю процедуру:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Sub Command1_Click()
          Set cn = New ADODB.Connection
         cn.Open "Provider=microsoft.jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\balance.mdb"
         cn.Execute "UPDATE spravrah SET nmrah = " & Trim(Text1.Text) & " , opis = '" & Trim(Text2.Text) & _
         "' WHERE nmrah = " & a & " and opis = '" & b & "'"
 Flex1.Refresh
cn.Close
Set cn = Nothing
End Sub


ничего не происходит...
...
Рейтинг: 0 / 0
07.02.2013, 23:35
    #38142626
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screameЗапускаю процедуру:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Command1_Click()
dim strSQL as string
          Set cn = New ADODB.Connection
         cn.Open "Provider=microsoft.jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\balance.mdb"
strSQL = "UPDATE spravrah SET nmrah = " & Trim(Text1.Text) & " , opis = '" & Trim(Text2.Text) & _
         "' WHERE nmrah = " & a & " and opis = '" & b & "'"
debug.print strSQL
         cn.Execute strSQL
 Flex1.Refresh
cn.Close
Set cn = Nothing
End Sub


ничего не происходит...
добавляй выделенное, и покажешь результат debug.print
...
Рейтинг: 0 / 0
07.02.2013, 23:40
    #38142632
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
Вот что вышло!
...
Рейтинг: 0 / 0
07.02.2013, 23:55
    #38142643
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screame,

у тебя в БД НЕТ записей с
Код: sql
1.
opis=''


там есть записи с
Код: sql
1.
opis is null



разницу - понимаеш ?
...
Рейтинг: 0 / 0
08.02.2013, 00:01
    #38142657
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
значит нужно проверять не равно ли b NULL, это нужно проверять в запросе или конструкцией If then?
...
Рейтинг: 0 / 0
08.02.2013, 00:20
    #38142675
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
screameзначит нужно проверять не равно ли b NULL, это нужно проверять в запросе или конструкцией If then?
даа, ни там и ни там - НЕ "нужно проверять"
у тебя есть поле ПК - kod,
вот условие по нему, в запросе и подставляй
...
Рейтинг: 0 / 0
08.02.2013, 00:27
    #38142686
screame
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоотвествие типов данных в запросе
я как раз до этого только что допер, спасибо огромное за помощь!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Несоотвествие типов данных в запросе / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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