powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи!
7 сообщений из 7, страница 1 из 1
Прошу помощи!
    #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
Прошу помощи!
    #39304578
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
kulib a = CurrentProject.Connection.Execute(txtSQL).Fields(0)
А что в этот момент содержит txtSQL?
А попробуйте вместо "Передача*" написать "Передача%"
...
Рейтинг: 0 / 0
Прошу помощи!
    #39304592
kulib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ыkulib a = CurrentProject.Connection.Execute(txtSQL).Fields(0)
А что в этот момент содержит txtSQL?
А попробуйте вместо "Передача*" написать "Передача%"
txtSQL так и несет текст эскуэль

А вот это "Передача%" сработало только как-то наоборот стало в одном месте 1, а в сохраненном запросе 0(ноль). Как так то?
...
Рейтинг: 0 / 0
Прошу помощи!
    #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
Прошу помощи!
    #39304959
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
kulibtxtSQL так и несет текст эскуэльЯ в курсе. И предлагал продемонстрировать, какой именно текст он несет, что именно у вас получилось. На этом этапе легко проглядеть какую-нибудь мелочь.
kulibА вот это "Передача%" сработало только как-то наоборот стало в одном месте 1, а в сохраненном запросе 0(ноль). Как так то?Ну так сделайте то же самое в сохраненном. Замените возле like * на %
...
Рейтинг: 0 / 0
Прошу помощи!
    #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
Прошу помощи!
    #39305068
kulib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И вот сразу нашел на стороннем форуме:
авторВообще разработчики от мелкософта жутко мучают своих потребителей - прикладных программеров придумыванием новых технологий, не заботясь особенно об их совместимости и проблемам , связанным с их освоением.
OLEDB.ADO - когда я изучал , что мне применять , декларировалась как наиболее современная и универсальная, а DAO - отмирающая. И я решил использовать ADO, но столкнулся с тем, что в ней не могу использовать механизм привязки внешних истоников данных к MDB базе (а это часто нужно и удобно использовать ACCESS как промежуточную для объединения всех источников и их обработке), что заставило использовать параллельно несколько технологий - ADO , DAO , ADOX.
Вообще, повторяю , все эти сложности мешают сосредоточиться на своей прикладой модели, требуют быть специалистом в куче инструментальных технологий, НО - с мелкософтом так будет всегда!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Прошу помощи!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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