Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.109 c
2-1270329778
Б
2010-04-04 01:22
2010.08.27
String -> WideChar


6-1216978382
Zhekson
2008-07-25 13:33
2010.08.27
Отправка письма


15-1268222361
@!!ex
2010-03-10 14:59
2010.08.27
Самый быстрый C++ компилятор


2-1274238844
NBAH1990
2010-05-19 07:14
2010.08.27
Не нажимается клавиша по коду


15-1271830825
12
2010-04-21 10:20
2010.08.27
Apache2.2. Странный глюк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский