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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.01.2006, 10:53   #1  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Товарищи добрый день, просьба сильно не пинать за вопрос который уже поднимался. Облазил кучу форумов, нарыл кучу инфу по экспорту, пытаюсь сделать так же, но вываливается сообщение об ошибке. Пишет "Недостаточно параметров, требуется 1" .

Использую

'Microsoft ActiveX Data Objects 2.6 Library'.Connection
'Microsoft ActiveX Data Objects 2.6 Library'.Recordset

сам код таков

Код:
DBFBase.Open('MMB_DBF1');
DBFFile.Open('tabl.DBF', DBFBase);

VarTXT:='Testmessage';
SqlStr:='insert into "tabl.DBF"(test1) values('+VarTxt+')';
DBFBase.Execute (SqlStr);
Если вместо VarTxt подставить число то всё ок, Народ помогите, подскажите в чём дело.
СПАСИБО.
Старый 27.01.2006, 11:36   #2  
yd_ is offline
yd_
Участник
 
62 / 10 (1) +
Регистрация: 24.01.2005
1. Скорее всего к делу не относится - попробуйте "tabl.DBF" без кавычек.
2. Я не понял насчет "Если вместо VarTxt подставить число то всё ок" - у Вас VarTXT имеет тип Text. Какой тип у поля test1?
Старый 27.01.2006, 11:58   #3  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
1. Пробовал без кавычек название таблицы - не прокатывает, та же ошибка.
2. Когда говорил что с числом прокатывает, то имел ввиду, что если вместо VarTxt подставить Format(VarDec) то запись в dbf прокатывает, соотвественно VarDec имеет формат Decimal. Поле test1 имеет тип Character(10).

Народ помогите, уже второй день бьюсь, ничего не выходит. Может быть у гкого то есть готовый объект по экспорту в DBF для Nav3.60 ? Спасибо.
Старый 27.01.2006, 12:54   #4  
zm is offline
zm
Участник
 
44 / 10 (1) +
Регистрация: 15.07.2003
Адрес: Латвия
Попробуйте что-то вроде:
'INSERT INTO "' + CurrentDirectory + '\' + 'konfig.dbf' + '" VALUES (' + .... + ')';
Старый 27.01.2006, 16:39   #5  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Цитата:
Сообщение от zma Посмотреть сообщение
Попробуйте что-то вроде:
'INSERT INTO "' + CurrentDirectory + '\' + 'konfig.dbf' + '" VALUES (' + .... + ')';

Маленький вопрос, а что за тройные кавычки перед values ?
Старый 27.01.2006, 17:54   #6  
yd_ is offline
yd_
Участник
 
62 / 10 (1) +
Регистрация: 24.01.2005
Кстати, насчет кавычки это мысль - когда Вы явно указываете в тексте команды значение строкового типа, то оно должно быть в кавычках. CurrentDirectory, мне кажется, ни к чему - она должны быть прописана в строке соединения - а вот в команде должно быть 'insert into tabl.DBF(test1) values('+InvComma+VarTxt+InvComma+')', где InvComma это текстовая константа, значением которой является единственный символ - "'". Я так писал запросы на select.
Старый 31.01.2006, 11:29   #7  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
Цитата:
Сообщение от yd_ Посмотреть сообщение
Кстати, насчет кавычки это мысль - когда Вы явно указываете в тексте команды значение строкового типа, то оно должно быть в кавычках. CurrentDirectory, мне кажется, ни к чему - она должны быть прописана в строке соединения - а вот в команде должно быть 'insert into tabl.DBF(test1) values('+InvComma+VarTxt+InvComma+')', где InvComma это текстовая константа, значением которой является единственный символ - "'". Я так писал запросы на select.
Уважаемый yd, подскажите пожалуйста, что то я совсем запутался. Написал в коде следующую строчку
Код:
DBFBase.Execute ('insert into tabl.DBF(test1) values('+InvComma+VarTXT+InvComma+')')
В text Consatnts прописал InvComma "'" где я так понимаю прописывается верхняя одиночная запятая - ' . Navision выдаёт теперь что то совершенно невообразимое: "Ошибка синтаксиса (пропущен оператор) в выржении запроса '[']Test[']' "
Test- значение переменной VarChar
Старый 01.02.2006, 10:04   #8  
yd_ is offline
yd_
Участник
 
62 / 10 (1) +
Регистрация: 24.01.2005
Попробую словами: одинарные кавычки (по-англицки inverted comma, т.е. перевернутая запятая) используются в языке SQL для выделения начала и окончания текстовой строки. Когда Вы пишите 'INSERT t.dbf(int_f) VALUES (' + FORMAT (IntVar) + ')', где поле int_f имеет тип int(4), например, то значение, которое будет в скобках после values, может быть и без одинарных кавычек, т.к. это число. А вот когда переменная типа VarChar, то должны быть кавычки, т.е. 'INSERT t.dbf (char_f) VALUES ('mama')'. Теперь представим, что у нас в Navision есть переменная CharVar типа Text (4). Мы ей присваиваем
CharVar := 'mama';
и пишем
QueryText := 'INSERT t.dbf (char_f) VALUES (' + CharVar + ')';
в результате значение переменной QueryText будет
'INSERT t.dbf (char_f) VALUES (mama)', т.е. mama БЕЗ КАВЫЧЕК.
Чтобы "вставляемое" значение типа VarChar имело правильный формат, нужно написать
QueryText := 'INSERT t.dbf (char_f) VALUES (' + InvComma + CharVar + InvComma + ')';
где InvComma это TextConstant, ЗНАЧЕНИЕМ КОТОРОЙ БУДЕТ ВСЕГО ОДИН СИМВОЛ - ОДИНАРНАЯ КАВЫЧКА.
Старый 01.02.2006, 15:08   #9  
ksandr is offline
ksandr
Участник
 
23 / 10 (1) +
Регистрация: 27.01.2006
уважаемый yd спасиб за помощь, всё получилось уже после вашего первого поста, загвоздка была именно в текстовой константе. Ещё раз спасибо. С sql языком знаком, т.к. программлю на VB, но вот особенности Navision пока не все освоил
 


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

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

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