AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2009, 11:21   #1  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
С помощю C/ODBC создал Data Source.
В Delphi использую ADO. Коннект к базе производится нормально.
Но на запрос типа "SELECT * FROM Vendor " ругается, что такой таблицы нет.
Ясно, что запрос в данном случае нужно сделать как-то по-другому.
Может кто встречался с такой проблемой?
Заранее благодарен.
Старый 04.05.2009, 11:34   #2  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
Попробуйте
Код:
SELECT * FROM [НазваниеФирмы$Vendor]
Старый 04.05.2009, 12:04   #3  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Я когда-то так делал в SQL базе Navision и все нормально работало.
Но в данном случае
SELECT * FROM [НазваниеФирмы$Vendor]
тоже не работает.
Старый 05.05.2009, 12:07   #4  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
попробуйте так - [Название базы данных].[dbo].[Название фирмы$Vendor]
Старый 05.05.2009, 22:58   #5  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
К сожалению, вариант
[Название базы данных].[dbo].[Название фирмы$Vendor]
тоже не прошел.
Старый 06.05.2009, 11:48   #6  
art06 is offline
art06
Участник
Аватар для art06
 
192 / 10 (1) +
Регистрация: 11.08.2006
Создайте сами базу данных, создайте там таблицу и попробуйте обратится к этой базе.
Если у вас не пройдет select - то надо будет проверять настройки компонентов и ваш код. Надо бы еще посмотреть ошибку которую выдает система.
Старый 06.05.2009, 21:33   #7  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Параметры ODBC и ADOConnection приведены в прикрепленных файлах:
[attachment=1004:C_ODBC.jpg]
[attachment=1005:ADO_Connection.jpg]
Запрос следующий:

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM [Dk TEXNIKA LTD OOO$Vendor]');
Open;
end;

Ошибка следующая:
[attachment=1006:Error.jpg]
Еще раз замечу, что коннект ADO с базой устанавливается нормально.
В случае
SQL.Add('SELECT * FROM Vendor');
сообщение о том, что таблица не существует.
Миниатюры
Нажмите на изображение для увеличения
Название: C_ODBC.jpg
Просмотров: 393
Размер:	50.5 Кб
ID:	10460   Нажмите на изображение для увеличения
Название: Error.jpg
Просмотров: 359
Размер:	30.6 Кб
ID:	10462  

Изображения
 
Старый 08.05.2009, 20:52   #8  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
С помощью ADODataSet просмотрел список таблиц базы данных.
Странная картина открылась.
Большая часть названий таблиц и полей с крякозябрами.
Таблицы пустые.
Часть таблиц на английском языке.
Есть несколько знакомых таблиц типа "Company", Material_Ledger,Material_Journal...
"Company" нормально открывается. При попытке открыть другие вылетает ошибка:
"Data provider or other service returned an E_FAIL status".
Нет всех главных таблиц типа "G/L Entry", Vendor, Customer и т.д.
Что бы это значило?
Старый 09.05.2009, 15:52   #9  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Крякозябры оказались названиями нужных мне таблиц на русском языке.
Сейчас единственноя проблема - ошибка
"Data provider or other service returned an E_FAIL status".
Старый 11.05.2009, 21:44   #10  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Причина ошибки
"Data provider or other service returned an E_FAIL status"
крылась в использовании в опциях C/ODBC регионального символа десятичных знаков.
В общем, надо было убрать птичку с чекбокса "Use Regional Decimal Simbol".
Пример запроса:
SQL.Add('SELECT "Код Валюты",' +
'"Дата Начала",' +
'"Курс Валюты Сумма",' +
'"Корр_ Курс Валюты",' +
'"Связанный Код Валюты",' +
'"Связанный Курс Валюты Сумма",' +
'"Фикс_ Курс Валюты",' +
'"Связ_ Корр_ Курс Валюты"' +
' FROM "Валюта Курс"');
Очередная проблема:
Не могу задать условие по дате.
Поскольку ничего по этому поводу не нашел, решил дествовать методом перебора.
Но ни один из следующих вариантов не заработал:

' WHERE "Дата Начала"=' + '08-08-04');
' WHERE "Дата Начала"=' + '2008-08-04');
' WHERE "Дата Начала"=' + '04-08-08');
' WHERE "Дата Начала"=' + '04-08-2008');
' WHERE "Дата Начала"=' + '04.08.08');
' WHERE "Дата Начала"=' + '04.08.2008');
' WHERE "Дата Начала"=' + '04_08_08');
' WHERE "Дата Начала"=' + '04_08_2008');
' WHERE "Дата Начала"=' + '04082008');
' WHERE "Дата Начала"=' + '040808');
' WHERE "Дата Начала"=' + '20080804');
' WHERE "Дата Начала"=' + '080804');
' WHERE "Дата Начала"=' + 'STR_TO_DATE('+QuotedStr(DateToStr(Now))+','+QuotedStr('%d.%m.%Y')+')');
' WHERE "Дата Начала"=' + 'STR_TO_DATE('+QuotedStr(DateToStr(Now))+')');
' WHERE "Дата Начала"=' + 'STR_TO_DATE('+QuotedStr('2008-08-04')+')');
' WHERE "Дата Начала"=' + '2008-08-04 00:00:00,000');
' WHERE "Дата Начала"=' + QuotedStr('04.08.2008'));
' WHERE "Дата Начала"=' + QuotedStr('2008-08-04 00:00:00,000'));
' WHERE "Дата Начала"=' + QuotedStr('2008-08-04 00:00:00'));
' WHERE "Дата Начала"=' + QuotedStr('#04.08.2008#'));
' WHERE "Дата Начала"=' + QuotedStr('#2008-08-04#'));
' WHERE "Дата Начала"=' + QuotedStr('2008-08-04'));
' WHERE "Дата Начала"=' + '#2008-08-04#');
' WHERE "Дата Начала"=' + QuotedStr('#2008-08-04 00:00:00,000#'));
' WHERE "Дата Начала"=' + QuotedStr('#2008-08-04 00:00:00#'));
' WHERE "Дата Начала"=' + '#2008-08-04 00:00:00#');
' WHERE "Дата Начала"=' + '#2008-08-04 00:00:00,000#');
' WHERE "Дата Начала"=' + 'ts 2008-08-04 00:00:00');
' WHERE "Дата Начала"=' + '2008-08-04 00:00:00');
' WHERE "Дата Начала"=' + '[ts 2008-08-04 00:00:00]');

Может у кого-то есть идеи?
Старый 12.05.2009, 11:06   #11  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
' WHERE "Дата Начала"=' + '''20080804''' а так работает? Это длжно отработать как 4 авгкста 2008 года, вроде.
Старый 12.05.2009, 12:31   #12  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Проверить смогу только вечером.
Но насколько помню все, что заключено в двойные кавычки воспринимается как название таблицы, поля.
Старый 12.05.2009, 21:19   #13  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
>>WHERE "Дата Начала"=' + '''20080804'''
Вариант также не сработал.
Старый 13.05.2009, 08:53   #14  
Smart is offline
Smart
Участник
 
51 / 13 (1) ++
Регистрация: 09.06.2005
Попробуйте
'WHERE "Дата Начала"=' + '08/04/2008'
Старый 13.05.2009, 22:09   #15  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
>>'WHERE "Дата Начала"=' + '08/04/2008'
Дает ошибку:
Invalid operand for operator '=';
Старый 13.05.2009, 23:54   #16  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
может привести дату к integer и скормить так?
Старый 14.05.2009, 13:52   #17  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Для SQL-запроса по дате надо использовать SQL-функцию CAST
Пример: запрос полей No., Last Date Modified из таблицы Customer, если Last Date Modified = 2008-07-11

SELECT No_, [Last Date Modified]
FROM [CronusDB].[dbo].[CRONUS AG$Customer]
WHERE [Last Date Modified] = CAST('2008-07-11' AS DATE)

У меня такой запрос срабатывает корректно.
Старый 14.05.2009, 21:56   #18  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
>>AlexB
Дает ошибку:
Unexpected extra token: (
Вообще то, что работает для SQL базы, для Native базы не работает.
Старый 15.05.2009, 19:12   #19  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от mefodiy Посмотреть сообщение
>>AlexB
Дает ошибку:
Unexpected extra token: (
Вообще то, что работает для SQL базы, для Native базы не работает.
Unexpected extra token => скорее всего в SQL-Statement не хватает кавычек
Заключите дату в дополнительные простые кавычки
CAST(''2008-07-11'' AS DATE)
Старый 15.05.2009, 20:55   #20  
mefodiy is offline
mefodiy
Участник
 
96 / 10 (1) +
Регистрация: 08.07.2007
Цитата:
Сообщение от AlexB Посмотреть сообщение
Unexpected extra token => скорее всего в SQL-Statement не хватает кавычек
Заключите дату в дополнительные простые кавычки
CAST(''2008-07-11'' AS DATE)
Та же ошибка:
Unexpected extra token: (
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:55.