Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Несоответствие типов данных. / 25 сообщений из 30, страница 1 из 2
30.07.2014, 10:19
    #38708765
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Доброе утро, помогите, пожалуйста, разобраться с ошибкой.

Есть простенький цикл:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
k1 = a.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    For i = 6 To k1
     mv = a.Sheets(1).Cells(i, 2)
     pp = a.Sheets(1).Cells(i, 3)
     'MsgBox nn
     Set rst = New ADODB.Recordset 
     rst.Open ("SELECT SUM(Ïîðòôåëü.Ðàçìåð_êðåäèòà) From Ïîðòôåëü WHERE (Ïîðòôåëü.Ìåñÿö_âûäà÷è = '" & CStr(mv) & "') AND (Ïîðòôåëü.Ïîðòôåëü = '" & CDate(pp) & "')"), conn 
     a.Sheets(1).Cells(i, 4).CopyFromRecordset rst 
    Next i


mv as string, pp as date.
В общем вылезает ошибка "Несоответствие типов данных в выражении условия отбора" на Портфель.Портфель = '" & CDate(pp) & "'. Я так понимаю, что не понимает формат даты. Посмотрел много тем, но не могу разобраться. Если просто ставить Портфель.Портфель = '01.02.2011', то ошибка остается. Может сюда нужно как-то дописать формат типа: dd.mm.yyyy? Спасибо заранее за помощь.
...
Рейтинг: 0 / 0
30.07.2014, 10:23
    #38708775
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Maxim12345678,

Код: sql
1.
SELECT SUM(Ïîðòôåëü.Ðàçìåð_êðåäèòà) From Ïîðòôåëü WHERE (Ïîðòôåëü.Ìåñÿö_âûäà÷è = '" & CStr(mv) & "') AND (Ïîðòôåëü.Ïîðòôåëü = '" & CDate(pp) & "')
...
Рейтинг: 0 / 0
30.07.2014, 10:24
    #38708777
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
СУБД какая?

Если JET, то
Портфель.Портфель = #10/25/2004#

Если MSSQL, то
Портфель.Портфель = '2004-10-25'
...
Рейтинг: 0 / 0
30.07.2014, 10:24
    #38708778
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Блин, фигня какая-то получилась :( Вроде нужные теги использовал...
...
Рейтинг: 0 / 0
30.07.2014, 10:25
    #38708780
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

Привет, спасибо. Код обращается к Access.
...
Рейтинг: 0 / 0
30.07.2014, 10:34
    #38708796
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Проще использовать CDate() - а уж драйвер сам разберётся, как представить дату, чтобы правильно.
...
Рейтинг: 0 / 0
30.07.2014, 10:35
    #38708797
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
В смысле использовать в самом тексте запроса, а не при его формировании.
...
Рейтинг: 0 / 0
30.07.2014, 10:42
    #38708805
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
AkinaПроще использовать CDate() - а уж драйвер сам разберётся, как представить дату, чтобы правильно.Akina, от тебя такого не ожидал, может у тебя логин с паролем украли?

Maxim12345678 - не следуй этому совету. CDate превращает аргумент в дату, здесь же нужна строка, причем определенного формата.
...
Рейтинг: 0 / 0
30.07.2014, 10:45
    #38708812
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
AkinaВ смысле использовать в самом тексте запроса, а не при его формировании.тем более категорически не следует этого делать. Недавно тут был топик, как у какого-то клиента день недели в формате даты стоял.
...
Рейтинг: 0 / 0
30.07.2014, 11:01
    #38708829
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Akina,

так тоже уже пробовал, не получается. Натыкался на каком-то из форумов на Ваш совет :)
...
Рейтинг: 0 / 0
30.07.2014, 11:02
    #38708832
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

что-то у меня вообще никак не получается :( 1 способом ищет, но ничего не находит... Может быть нужно формат данных поменять в таблице Access?
...
Рейтинг: 0 / 0
30.07.2014, 11:03
    #38708833
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Код покажи

(попробуй в другом браузере вставлять код с русским текстом)
...
Рейтинг: 0 / 0
30.07.2014, 11:03
    #38708835
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Maxim12345678Может быть нужно формат данных поменять в таблице Access?какого типа столбец в БД?
...
Рейтинг: 0 / 0
30.07.2014, 11:05
    #38708839
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Maxim12345678Натыкался на каком-то из форумов на Ваш совет :)
о ужас! он этот совет еще и на других форумах распространяет! четвертовать через виселицу!
...
Рейтинг: 0 / 0
30.07.2014, 11:07
    #38708840
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Sub OpenDB()
'===
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.DisplayStatusBar = False
Application.DisplayAlerts = False
'===

Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim a As Workbook
Dim k As Long, k1 As Long, i As Long, mv As String, pp As Date
    Set a = ThisWorkbook
    k = a.Sheets(1).Cells(Rows.Count, "D").End(xlUp).Row 
    a.Sheets(1).Range("D6:D" & CStr(k) & "").ClearContents     
    '===
    
    Set conn = New ADODB.Connection 
    conn = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=D:\Винтажи.accdb;Uid=Admin;Pwd=;"
    conn.Open
    
    '===
    
    'If conn.State = 1 Then
    'MsgBox "Åñòü êîíòàêò!"
    'Else
    'MsgBox "Áåäà :("
    'End If
    
    '===
    k1 = a.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Row
    For i = 6 To k1
     mv = a.Sheets(1).Cells(i, 2)
     pp = a.Sheets(1).Cells(i, 3)
     'MsgBox nn
     Set rst = New ADODB.Recordset 
     rst.Open ("SELECT SUM(Ïîðòôåëü.Ðàçìåð_êðåäèòà) From Ïîðòôåëü WHERE (Ïîðòôåëü.Ìåñÿö_âûäà÷è = '" & CStr(mv) & "') AND (Ïîðòôåëü.Ïîðòôåëü = '" & CDate(pp) & "')"), conn 
     a.Sheets(1).Cells(i, 4).CopyFromRecordset rst 
    Next i
'===
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
'===
End Sub
...
Рейтинг: 0 / 0
30.07.2014, 11:08
    #38708844
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

формат стоит Дата/Время, dd.mm.yy
...
Рейтинг: 0 / 0
30.07.2014, 11:08
    #38708846
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
и что изменилось? Как у тебя стояло CDate, так и стоит
...
Рейтинг: 0 / 0
30.07.2014, 11:10
    #38708853
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
и в скобки зачем параметр взял? Ты же только что в другом топике натыкался на эти грабли и опять...
в данном случае, конечно, ни на что не влияет, но все-таки
...
Рейтинг: 0 / 0
30.07.2014, 11:11
    #38708854
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

Кусок не тот скинул.

Вот так работает, но результатов нет...
rst.Open ("SELECT SUM(Ïîðòôåëü.Ðàçìåð_êðåäèòà) From Ïîðòôåëü WHERE (Ïîðòôåëü.Ìåñÿö_âûäà÷è = '" & CStr(mv) & "') AND (Ïîðòôåëü.Ïîðòôåëü = #01/02/11#)"), conn
...
Рейтинг: 0 / 0
30.07.2014, 11:14
    #38708859
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
ты месяц с днем местами не перепутал? сначала месяц, потом день, потом год

э-хе-хе, опять самому делать

Код: vbnet
1.
rst.Open "SELECT ... WHERE Портфель.Портфель = " & Format$(pp, "\#mm\/dd\/yyyy\#") , conn 
...
Рейтинг: 0 / 0
30.07.2014, 11:30
    #38708886
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

Портфель.Портфель = '&Format$(pp, '\#mm\/dd\/yyyy\#')'

Синтаксическая ошибка. У меня двойные кавычки вообще не воспринимает.
...
Рейтинг: 0 / 0
30.07.2014, 11:32
    #38708891
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Откуда у тебя взялись одинарные кавычки?
...
Рейтинг: 0 / 0
30.07.2014, 11:35
    #38708894
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

да это я пытался исправлять сам :(

Вот так работает: Портфель.Портфель = #02/01/2011#
...
Рейтинг: 0 / 0
30.07.2014, 11:45
    #38708912
Maxim12345678
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Pro,

спасибо за помощь. Так заработало:

Код: vbnet
1.
Портфель.Портфель = #" & Format(pp, "mm-dd-yyyy") & "#
...
Рейтинг: 0 / 0
30.07.2014, 12:10
    #38708950
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несоответствие типов данных.
Shocker.Proтем более категорически не следует этого делать. Недавно тут был топик, как у какого-то клиента день недели в формате даты стоял.
Ну если у кого рукопопие - то он ССЗБ. А если строковый литерал даты передаётся на формирование текста запроса правильный - не вижу причины не использовать функцию, которая распознаётся Jet-ом...

Но в данном случае я и правда невнимательно посмотрел - у него дата берётся из переменной типа дата-время, тут без форматирования никуда, неявное преобразование в стринг сработает не так, как надо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Несоответствие типов данных. / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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