Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Join и Locate / 23 сообщений из 23, страница 1 из 1
19.03.2018, 13:23
    #39616770
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Прошу помощи у уважаемого сообщества!
Используется запрос с объединение данных из двух таблиц с помощью LEFT JOIN.
Все работает, данные видны. Но, ни в какую не работает Locate при подключении к MSSQL! При работе с MDB такой проблемы нет, все работает. Куда смотреть?
...
Рейтинг: 0 / 0
19.03.2018, 13:28
    #39616776
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
шта ? ап чем топег ?
...
Рейтинг: 0 / 0
19.03.2018, 13:28
    #39616777
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Kirhe,

это известный глюк MSSQL. Перебирай записи руками. А главное - никому код не показывай.
...
Рейтинг: 0 / 0
19.03.2018, 13:31
    #39616781
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
чччДKirhe,

это известный глюк MSSQL. Перебирай записи руками. А главное - никому код не показывай.
Ну раз глюк, то все понятно. Сам код здесь и не нужен, наверное, но главную суть уловил. Спасибо, значит будем ручками перебирать.
...
Рейтинг: 0 / 0
19.03.2018, 13:36
    #39616784
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Проблема может быть в несоответствии типов ключа искомой записи и имеющегося значения.
Особенно когда ключ нестандартный: н-р Binary.

Сделайте тестовый проект. Запомните ключ в переменную Variant, сместитесь на другую запись и попробуйте найти ее локейтом.
...
Рейтинг: 0 / 0
19.03.2018, 13:42
    #39616788
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
LSVПроблема может быть в несоответствии типов
Да нет, там все правильно у меня, вероятнее всего именно глюк MSSQL. Сделал ручным перебором и все заработало.
Всем спасибо, вопрос закрыт!
...
Рейтинг: 0 / 0
19.03.2018, 14:00
    #39616804
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Kirheне работает Locate

ошибка в 13ой строке
...
Рейтинг: 0 / 0
19.03.2018, 14:09
    #39616808
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
LSV...Сделайте тестовый проект...
Некогда, трясти надо!
...
Рейтинг: 0 / 0
19.03.2018, 14:35
    #39616829
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
чччДНекогда, трясти надо!
X11ошибка в 13ой строке
Петросян детектед!
...
Рейтинг: 0 / 0
19.03.2018, 15:26
    #39616865
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Попробуй обратиться в Битву экстрасенсов.
...
Рейтинг: 0 / 0
19.03.2018, 15:27
    #39616866
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
KirheНу раз глюк, то все понятно. Сам код здесь и не нужен, наверное, но главную суть уловил. Спасибо, значит будем ручками перебирать.
Юмора не понял, а жаль...
...
Рейтинг: 0 / 0
20.03.2018, 13:56
    #39617514
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Вынужденно поднимаю тему.
При большом количестве записей, ручной перебор начинает тормозить.

Итак, заново описываю задачу.
Имеется запрос:
Код: sql
1.
SELECT u.ID as ID, * FROM Units as u LEFT JOIN Finance as f ON f.FinanceID = u.ID


При таком запросе не работает DataSet.Locate('ID', IDValue, []) при подключении к mssql. С таким же запросом при подключении к mdb все работает.
Если запрос привести к виду:
Код: sql
1.
SELECT u.ID as ID, * FROM Units


то Locate начинает работать при работе с mssql.
...
Рейтинг: 0 / 0
20.03.2018, 14:43
    #39617575
goldmi45
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Kirhe,

первое правило - описывайте все поля, а не используйте звёздочку.

а по теме: неужели просто так отказывается работать? или всё же какая-то ошибка есть? или неправильное поведение?
...
Рейтинг: 0 / 0
20.03.2018, 14:43
    #39617576
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Подключите к вашему запросу Грид и посмотрите, что в нём не так
...
Рейтинг: 0 / 0
20.03.2018, 14:56
    #39617582
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
DimaBrи посмотрите, что в нём не такСтавлю на дублирование поля ID
...
Рейтинг: 0 / 0
20.03.2018, 15:41
    #39617634
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
goldmi45Kirhe, неужели просто так отказывается работать? или всё же какая-то ошибка есть? или неправильное поведение?
Ошибок никаких нет. Просто всегда выбирается самая первая запись.
Надо попробовать перечислить в запросе нужные поля поименно
...
Рейтинг: 0 / 0
20.03.2018, 15:56
    #39617645
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
KirheОшибок никаких нет. Просто всегда выбирается самая первая запись.Locate - это функция. Какой она возвращает результат?
...
Рейтинг: 0 / 0
20.03.2018, 16:01
    #39617649
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
_Vasilisk_KirheОшибок никаких нет. Просто всегда выбирается самая первая запись.Locate - это функция. Какой она возвращает результат?
Возвращает False
...
Рейтинг: 0 / 0
20.03.2018, 16:09
    #39617656
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Kirhe_Vasilisk_пропущено...
Locate - это функция. Какой она возвращает результат?
Возвращает FalseА там случайно нет хвостовых пробелов ? Какого типа ключ ?
...
Рейтинг: 0 / 0
20.03.2018, 16:23
    #39617668
Kirhe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
goldmi45Kirhe, первое правило - описывайте все поля, а не используйте звёздочку.
Правило первое помогло. Выбрал нужные поля путем их перечисления и баг пропал. Видимо таки поле ID таки дублировалось, хотя в менеджере запросов mssql видно что имена полям присваиваются разные…
...
Рейтинг: 0 / 0
20.03.2018, 22:32
    #39617862
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Код: sql
1.
SELECT u.ID as ID, * FROM Units as u LEFT JOIN Finance as f ON f.FinanceID = u.ID


первое поле в запосе
Код: sql
1.
u.ID as ID


Второй раз тоже самое поле
Код: sql
1.
*
...
Рейтинг: 0 / 0
20.03.2018, 22:44
    #39617866
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
Kirhe...Видимо таки поле ID таки дублировалось…

"Видимо"?
Когда код набирал - тебя там не было, или просто кодил ночью, в темноте?
...
Рейтинг: 0 / 0
21.03.2018, 11:33
    #39618044
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Join и Locate
DimaBrВторой раз тоже самое полеНет. Тогда бы Locate работал. Он хватал ID из другой таблицы
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Join и Locate / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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