powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / C++ Builder, Access и Проблема с SQL
32 сообщений из 32, показаны все 2 страниц
C++ Builder, Access и Проблема с SQL
    #32570532
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть достаточно простой запрос к базе Access который вызывается из приложения написанного на C++ Builder.

Select
sum(M_oper.cena1) as Many,
Tov_Name
From
M_Oper,
Tovar
Where
M_Oper.Nomtov=Tovar.K_Tov and
(Artikul LIKE 1 & "*")

Так что удивительно, если запустить этот запрос непосредственно из Access - все работает на ура и выдается огромный список данных, если же этот запрос вызвать из приложения C++ Builder то в результате выборки я получаю пустой список. Если же убрать конструкцию (Artikul LIKE 1 & "*") то выдается полноценный, длинный список данных.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570534
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
LIKE 1 & "*"
- это некорректно. Эта конструкция заставляет Аксесс преобразовывать чиловое значение 1 в строковое по неуказанному формату. Он может сделать это разными способами:
"1"
" 1"
"1.0"
"1,0"
и т.д. Поэтому лучше выбрать из этих вариантов тот, который на самом деле нужен, и написать его явным образом.

Кроме того, можно попробовать вместо * написать %.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570535
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
P.S. И тогда не нужен &, а просто можно написать
LIKE "1*"
LIKE "1.0*"
и т.д.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570545
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном случае "1" является именно символом, а не числом, тип поля сивольный.
На сколько я понимаю, оператор Like работает именно с текстом.
Попробовал взять 1 в кавычки - не помогло. Так же попробовал вместо цифры использовать букву - картина все та же.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570547
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с символом % картина еще хуже, с ним и в Ассess запрос выдает пустой набор данных.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570548
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumВ данном случае "1" является именно символом, а не числом, тип поля сивольный.
Почему же тогда в приведенной команде употреблено число 1, а не строка?
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570555
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я и строку пробовал - результат тот же...
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570564
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хочу увидеть окончательный вариант селекта и пример данных, которые он должен вернуть.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570572
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос как есть:
Select
sum(M_oper.cena1) as Many,
Tov_Name
From
M_Oper,
Tovar
Where
M_oper.V_Dock=6 and
M_Oper.Nomtov=Tovar.K_Tov and
(Artikul LIKE "Б" & "*")
Group by
Tov_Name

Builder возвращает пустой набор. Тот же запрос в Access возвращает:

Many Tov_Name
25 662,47р. Браслет (585)
1 399,15р. Заготовки браслетов д/часов (585)
1 600,65р. Каталог
1 587,74р. Кольцо (585)
38 125,77р. Крест (585)
61 197,91р. Крест (925)
3 574,82р. Проволка (585)
2 554,92р. Серьги (585)
1 870,67р. Сусальное золото
2 472,37р. Сусальное золото (585)
2 611,82р. Фут. для браслетов
1 140,00р. Фут. для колец
1 837,92р. Фут. для серег
11 594,16р. Цепь (585)
1 760,26р. Цепь (925)
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570573
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А поле Artikul?.. Впрочем, и так догадываюсь.

А без like оно хоть как-то работает?
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570579
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без Like работает - пашет только в путь
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570581
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Тогда могу только предложить заменить * на %. То, что из Аксесса оно не работает, не имеет значения.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570586
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Владимир Санычем по поводу %, а кроме того как-то смущает конструкция: Artikul LIKE "Б" & "*", зачем нужен амперсанд?
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570588
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Serge Gavrilovзачем нужен амперсанд?
А я уже предлагал автору убрать его, см. 21:07. :^)
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570589
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА я уже предлагал автору убрать его, см. 21:07. :^)
Я видел, но Bezum снова его использует.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570593
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Боюсь, что проблема не в этом. А что еще может быть, кроме %? Я надеюсь, что автор проверял % не только из Аксесса...
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570602
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какого ляпа там стоит & уж не знаю, так посоветовали /topic/101498
А насчет %, разумеется проверял и с него начинал. Но похоже что Access знать не знает такого оператора в этой конструкции.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570603
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumКакого ляпа там стоит & уж не знаю, так посоветовали /topic/101498
Так советовал я, потому что в вопросе речь шла о соединении переменной (параметра) и строковой константы (звездочки). А сейчас речь о двух константах, и я же говорю, что тогда & не нужен. Не думаю, что мне там можно верить больше, чем мне здесь.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570605
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumА насчет %, разумеется проверял и с него начинал.
Только в Аксессе (21:24) или через C++ Builder тоже?
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570609
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через C++Builder тоже. Базу подключал через компаненты ADO. Исходя из этого весь SQL коректен если написан по правилам Access. И что с этим делать мало понятно. Ибо SQL сам по себе коректен, а работать как надо через Builder отказывается. Странно это все, мистика прям какая-то...
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570614
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Предлагаю еще один вариант селекта.

Select sum(M_oper.cena1) as Many, Tov_Name
From M_Oper inner join Tovar on M_Oper.Nomtov=Tovar.K_Tov
Where M_oper.V_Dock=6 and Artikul LIKE "Б%"
Group by Tov_Name

Если не пойдет, то дальше можно пробовать:

1. Вернуть * (в этом же селекте).
2. Не Б, а цифру (может, проблема с русскими буквами).
3. У названия Artikul дорисовать имя таблицы.
4. Подключиться не через ADO, а через DAO (не знаю, можно ли; если да, то со *, а не %).
5. Упростить селект до крайности, оставив только одну таблицу, одно условие и без группировки.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570617
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
6. Вместо двойных кавычек поставить одиночные (апострофы).
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570625
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Менять конструкцию запроса особо не получится, ибо данный текст SQL запроса формируется в зависимости от комбинации условий, которые задаются на форме пользователем. Причем условий там достаточно много и в худшем случае запрос без переноса строк выглядит угрожающе и бывает на пол страницы. С DAO я не работал и переделать на раз два все приложение не получится, при условии что положительный эфект сомнителен.
Хотя приписывать к полю имя таблицычерез точку мне не сложно. Но эфекта это никакого не дало, чего и следовало ожидать т.к. наименования полей в этих таблицах не совпадают. Вобщем хрень какая-то. Хоть садись вешайся и пиши свою пользовательскую функцию.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570630
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumМенять конструкцию запроса особо не получится, ибо данный текст SQL запроса формируется в зависимости от комбинации условий, которые задаются на форме пользователем.
Я предлагаю это проделать только для проверки, только чтобы понять, в чем дело. После этого можно будет вернуться к самой программе.

BezumВобщем хрень какая-то. Хоть садись вешайся и пиши свою пользовательскую функцию.
Предлагаю все-таки проверить ВСЕ мои пункты, причем в разных сочетаниях друг с другом. Особенно 5 и 6.

Опыт говорит, что если делать хотя бы что-нибудь, то решение обычно находится. Соответственно, если нет, то нет. Впрочем, этот форум не для того, чтобы погонять, а для того, чтобы давать советы. Если следовать им не хочется, то так тому и быть. Просто мне не хочется, чтобы на моей совести было самоубийство.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570635
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверяю я все. Кстати говоря LIKE "Б%" ищет ни что иное как поле со значением Б%.
Вот до пункта 6 добрался.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570636
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumКстати говоря LIKE "Б%" ищет ни что иное как поле со значением Б%.
ОК, спасибо за информацию. Тогда возвращаемся к * и больше ее не трогаем.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570646
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Видимо, п.6 оказался самым трудным?
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570649
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нет, просто общался тут помимо...
Вскрытие показало что дело не в кавычках.
Так же вскрытие показало что значек & просто склеивал "текст" & "*"="текст*"
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32570650
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
BezumТак же вскрытие показало что значек & просто склеивал "текст" & "*"="текст*"
Блин. Я же это и повторял все время.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32571373
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну объясните хот кто-нибудь в чем дело???
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32572786
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В другом топике тот же автор писал:Мооя проблема заключается в следующем:
Я отправля запрос из приложения написанного на C++Builder к базе Access.
При этом использую в конструкции WHERE Оператор LIKE.
Например:

SELECT *
FROM Tble1
WHERE
Feald1 LIKE 'А*'

Если запустить этот запрос непосредственно в Access то получится набор данных, где записи в поле Feald1 начинаются с символа "A".
Если запустить этот запрос из приложения С++Builder то получится набор данных, где записи в поле Feald1 имеют значение "A*".

Если использовать, как в других СУБД, вместо '*' символ '%', то и в Access и в Builder выбираются записи которые в поле Feald1 имеют значение "A%".

Мне же надо выбрать записи при поомоощи приложения написанного на C++Builder, которые в поле Feald1 имеют значения начинающиеся с символа "А".

Поодскажите, где сообака зарыта???
Тот топик удаляется.
...
Рейтинг: 0 / 0
C++ Builder, Access и Проблема с SQL
    #32573653
Bezum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работет, через %. Почему не работало раньше так и не понятно. Но тем не менее через Builder работает коректно запрос:

Select
sum(M_oper.cena1) as Many,
Tov_Name From M_Oper, Tovar
Where
M_Oper.Nomtov=Tovar.K_Tov and
(Artikul LIKE "Текст%")
Group by Tov_Name
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / C++ Builder, Access и Проблема с SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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