Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

ADO-запрос в Native БД Navision 3.7   Найти похожие ветки 

 
mefodiy   (2009-05-08 09:02) [0]

Нужно подключиться и добавить запись в одну из таблиц Native БД Navision 3.7 (бывает еще SQL БД).
С помощю навижновского C/ODBC создал Data Source.
В Delphi использую ADO. Коннект к базе производится нормально.
При запросе:
with ADOQuery1 do
begin
 Close;
 SQL.Clear;
 SQL.Add("SELECT * FROM Vendor]");
 Open;
end;
Выдается сообщение о том, что таблица "Vendor" не существует (хотя это - "родная" навижновская таблица).
Пробовал варианты:
SQL.Add("SELECT * FROM [Название базы данных].[dbo].[Название фирмы$Vendor]");
и
SQL.Add("SELECT * FROM [Название фирмы$Vendor]");
Опять ошибка, но на этот раз о лишнем символе в названии таблицы.
На форуме по Navision ответ найти не удалось.
Может из мастеров кто-нибудь встречался с такой проблемой.
P.S.
Параметры ODBC:
Data Source (name): Navision
Description: <пусто>
Program Folder: <пусто>
Connection: "Local" (из вариантов Local,Server)
Server Name: <поле не активно>
Net Type: <поле не активно>
Database Name: MyDataBase
Commany Name: MyCompanyName
User ID: MyUserId
Password: MyPassword


 
sniknik ©   (2009-05-08 09:29) [1]

первый запрос написан с ошибкой. это скопировано или писалось тут?

с чего решил что есть dbo как в mssql?
уверен что для ограничители нестандартных названий квадратные скобки как в mssql, а не двойные кавычки например как в FB?

и вообще если не знаешь точно название таблицы почему не посмотреть это? например - кладешь на форму ADODataSet связываешь его с коннектом ставишь тип команды cmdTable и в коммандтекст просто выбираешь из списка нужное имя, как он его сам интерпретирует.


 
mefodiy   (2009-05-08 12:05) [2]

>>первый запрос написан с ошибкой. это скопировано или писалось тут?
Запрос писался тут. Конечно, в оригинале это
SQL.Add("SELECT * FROM Vendor");
Насчет ADODataSet обязательно проверю (к сожалению, смогу только вечером).
В любом случае, спасибо.


 
mefodiy   (2009-05-12 09:17) [3]

С помощью ADODataSet выяснилось следующее:
1.Названия таблиц в Native БД Navision 3.7 почему-то на русском языке
2.Если в названии таблицы или столбца есть пробел, то в запросе нужно использовать двойные кавычки.
Запрос нормально отрабатывает.
Сейчас возникла другая проблема: не могу найти вариант задания условия на дату. Видимо, в запросе нужно использовать какой-то специальный формат даты.
Перепробовал варианты:
" 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]");
Ни одно из условий не работает.


 
Медвежонок Пятачок ©   (2009-05-12 09:45) [4]

попробуй еще сто тысяч вариантов, а когда устанешь, начни использовать параметры


 
mefodiy   (2009-05-12 12:33) [5]

>>попробуй еще сто тысяч вариантов, а когда устанешь, начни использовать параметры

В том-то и дело, что негде посмотреть насчет этих параметров...


 
sniknik ©   (2009-05-12 12:42) [6]

параметры универсальны. любой OLEDB драйвер должен их понимать.


 
Медвежонок Пятачок ©   (2009-05-12 14:05) [7]

Parameters.ParamValues["param_name"] := EncodeDate(2008,8,4)


 
mefodiy   (2009-05-13 22:49) [8]

>>Медвежонок Пятачок ©
Запрос:

 with ADOQuery1 do
 begin
   Close;
   SQL.Clear;
   SQL.Add("SELECT "Код Валюты"," +
                           ""Дата Начала"," +
                           ""Курс Валюты Сумма"," +
                           ""Корр_ Курс Валюты"," +
                           ""Связанный Код Валюты"," +
                           ""Связанный Курс Валюты Сумма"," +
                           ""Фикс_ Курс Валюты"," +
                           ""Связ_ Корр_ Курс Валюты"" +
                 " FROM "Валюта Курс"" +
               " WHERE "Дата Начала"=:pDate");
   Parameters.ParamValues["pDate"] := EncodeDate(2008,8,4);
   Open;
 end;

дает ошибку: "Conversion error".


 
mefodiy   (2009-05-16 22:25) [9]

Наконец, нашел документацию:
http://www.navisionguider.dk/downloads/Man...1/w1w1nodbc.pdf,
из которой и вытекло решение:
Если в C/ODBC Setup-->Options-->Closing Date Support (ChekBox):
1. Да, то условие должно быть задано как:
" WHERE "Дата начала"=" + "{ts " + QuotedStr("2008-08-04 00:00:00") + "}");
2. Нет:
" WHERE "Дата начала"=" + "{d " + QuotedStr("2008-08-04") + "}");
Всем спасибо!


 
AndreyV ©   (2009-05-16 22:46) [10]

> [8] mefodiy   (13.05.09 22:49)
>   Parameters.ParamValues["pDate"] := EncodeDate(2008,8,
> дает ошибку: "Conversion error".

Parameters.ParamValues["pDate"].AsDate


 
mefodiy   (2009-05-16 22:46) [11]

Конечно, можно и так
1. " WHERE "Дата начала"={ts " + QuotedStr("2008-08-04 00:00:00") + "}");
2. Нет:
" WHERE "Дата начала"={d " + QuotedStr("2008-08-04") + "}");



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
2-1268828273
Mark
2010-03-17 15:17
2010.08.27
Помогите решить!


3-1238326964
Гость.
2009-03-29 15:42
2010.08.27
Access Violation в TpFIBDatabase при первом обращении.


2-1271150334
Гость
2010-04-13 13:18
2010.08.27
Try Finally Try Except а оно надо?


2-1273475660
Гость
2010-05-10 11:14
2010.08.27
fastReport


2-1268698888
DROWSY
2010-03-16 03:21
2010.08.27
Как обновить параметризованный набор,