Форум: "Базы";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.081 c