Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи! / 7 сообщений из 7, страница 1 из 1
06.09.2016, 16:42
    #39304572
kulib
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
Уважаемые! Засада заставила обратиться полуслепого немого))) Долблюсь вроде с простой задачкой, а на выходе трясина. Помогите пжлст. Даже нормального названия для топа не смог подобрать на нервах( Извиняюсь за флуд, не смог ничего найти по такой странной теме

Не могу врубиться почему в итоге коннекшн выдает ноль вместо единицы. Вот пример

Код: 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.
49.
50.
51.
Sub test()
'Тест выходного значения запроса!
DoCmd.SetWarnings True
    Dim dbs As Database, rstList As Recordset, fldID As Field, fldName As Field
        Set dbs = CurrentDb ' Возвращает ссылку на текущую базу данных.
Dim txtSQL As String

    On Error Resume Next 'здесь просто предварительно очищаются таблицы и запросы в циклах теста
CurrentDb.Execute "Drop table test_ТарифФиксы"
CurrentDb.Execute "Drop table q_ТарифФиксы"
    On Error GoTo 0
    'создается простенькая таблица
CurrentDb.Execute "Create table test_ТарифФиксы (idclient int, Client string(72))"

'потом просто добавляем запись через рекордсет
Set rstList = dbs.OpenRecordset("test_ТарифФиксы")
'Set fldID = rstList.Fields!idclient
'Set fldName = rstList.Fields!client

'rstList.MoveFirst
    With rstList
        '.Edit
        .AddNew
        .Fields("idclient") = 0
        .Fields("client") = "Передача прайс-листов"
        .Update
        .Close
    End With

tbl_Name = "test_ТарифФиксы"
'дальше компоную текст для формирования запроса c условием на значение в поле client
txtSQL = "SELECT Count([" & tbl_Name & "].CLIENT) As [COUNT] FROM [" & tbl_Name & "] WHERE ((([" & tbl_Name & "].CLIENT) Like (" & """" & "Передача*" & """" & ")))"
        '--- это просто для вывода текста для проверки корректности. можно закомментарить
        Dim FileName
        Dim iFileNum As Integer
        iFileNum = FreeFile
        sFileName = "D:\1"
        'Will write file
        Open sFileName For Append As iFileNum
        Print #iFileNum, txtSQL
        Close iFileNum
        '----
        '!!! И вот зараза результат который по всем идеям должен быть равен 1, он почему-то сцуко ноль!  :-(((
        a = CurrentProject.Connection.Execute(txtSQL).Fields(0)

'проверяю дополнительно созданием сохр.процедуры
Set MyQuery = dbs.CreateQueryDef("q_ТарифФиксы", txtSQL)
'открываю ее и вижу блин 1
DoCmd.OpenQuery "q_ТарифФиксы", acViewNormal, acEdit

End Sub



P.S. Наверное сразу можно грохнуть тему после ответов
...
Рейтинг: 0 / 0
06.09.2016, 16:50
    #39304578
ы
ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
kulib a = CurrentProject.Connection.Execute(txtSQL).Fields(0)
А что в этот момент содержит txtSQL?
А попробуйте вместо "Передача*" написать "Передача%"
...
Рейтинг: 0 / 0
06.09.2016, 17:04
    #39304592
kulib
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
ыkulib a = CurrentProject.Connection.Execute(txtSQL).Fields(0)
А что в этот момент содержит txtSQL?
А попробуйте вместо "Передача*" написать "Передача%"
txtSQL так и несет текст эскуэль

А вот это "Передача%" сработало только как-то наоборот стало в одном месте 1, а в сохраненном запросе 0(ноль). Как так то?
...
Рейтинг: 0 / 0
07.09.2016, 09:49
    #39304896
Прошу помощи!
DAO и ADO используют разные символы шаблона в операторе Like.
Почти весь ваш код использует методы DAO и только строка использует ADO:
Код: vbnet
1.
a = CurrentProject.Connection.Execute(txtSQL).Fields(0)


Никакого смысла в этом нет. Замените на:
Код: vbnet
1.
a = dbs.OpenRecordset(txtSQL).Fields(0)
...
Рейтинг: 0 / 0
07.09.2016, 10:49
    #39304959
ы
ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
kulibtxtSQL так и несет текст эскуэльЯ в курсе. И предлагал продемонстрировать, какой именно текст он несет, что именно у вас получилось. На этом этапе легко проглядеть какую-нибудь мелочь.
kulibА вот это "Передача%" сработало только как-то наоборот стало в одном месте 1, а в сохраненном запросе 0(ноль). Как так то?Ну так сделайте то же самое в сохраненном. Замените возле like * на %
...
Рейтинг: 0 / 0
07.09.2016, 12:05
    #39305059
kulib
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
ыkulibtxtSQL так и несет текст эскуэльЯ в курсе. И предлагал продемонстрировать, какой именно текст он несет, что именно у вас получилось. На этом этапе легко проглядеть какую-нибудь мелочь.
Так текст эскуэль выводится специально для проверки в куске кода:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 '--- это просто для вывода текста для проверки корректности в "D:\1". можно закомментарить
        Dim FileName
        Dim iFileNum As Integer
        iFileNum = FreeFile
        sFileName = "D:\1" ' (можно сменить букву диска, путь)
        'Will write file
        Open sFileName For Append As iFileNum
        Print #iFileNum, txtSQL
        Close iFileNum
        '----


Вот этого я и не знал! Считаю для себя этот ответ решением. Надо б на досуге просвятиться по ADO и DAO. Спасибо!
Анатолий ( Киев )DAO и ADO используют разные символы шаблона в операторе Like.
Почти весь ваш код использует методы DAO и только строка использует ADO:
Код: vbnet
1.
a = CurrentProject.Connection.Execute(txtSQL).Fields(0)


Никакого смысла в этом нет. Замените на:
Код: vbnet
1.
a = dbs.OpenRecordset(txtSQL).Fields(0)
...
Рейтинг: 0 / 0
07.09.2016, 12:11
    #39305068
kulib
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи!
И вот сразу нашел на стороннем форуме:
авторВообще разработчики от мелкософта жутко мучают своих потребителей - прикладных программеров придумыванием новых технологий, не заботясь особенно об их совместимости и проблемам , связанным с их освоением.
OLEDB.ADO - когда я изучал , что мне применять , декларировалась как наиболее современная и универсальная, а DAO - отмирающая. И я решил использовать ADO, но столкнулся с тем, что в ней не могу использовать механизм привязки внешних истоников данных к MDB базе (а это часто нужно и удобно использовать ACCESS как промежуточную для объединения всех источников и их обработке), что заставило использовать параллельно несколько технологий - ADO , DAO , ADOX.
Вообще, повторяю , все эти сложности мешают сосредоточиться на своей прикладой модели, требуют быть специалистом в куче инструментальных технологий, НО - с мелкософтом так будет всегда!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи! / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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