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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.10.2007, 16:31   #1  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Индекс не найден
Значит такая ситуация работаю я с ODBC. Перекидываю из файла *.dbf данные в Навиш....на
своем компьютере все сделал...и все работает...но стоит мне перекинуть кому нибудь свою
базу, на другую машину он выдает ошибку:


Вызов функции open неудачен. Microsoft JET Database Engine вернул следующие сообщение:
Индекс не найден.

Не потскажете в чем может быть причина????
Скину на всякий случай сам код:



Setup.GET;
Setup.CALCFIELDS(File);

IF Setup.File.HASVALUE THEN
BEGIN
Path:=ENVIRON('TMP') + '\';
DBFFile:=Setup."File Name";
MESSAGE('setup.file = %1', DBFFile);
END;
IF DBFFile = '' THEN
ERROR(Text001);

IF NOT ISCLEAR(Connection) THEN
CLEAR(Connection);
CREATE(Connection);
ConnStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=' + Path + ';Extended Properties=DBASE 5.0;';
Connection.Open(ConnStr);
IF ISCLEAR(RecSet) THEN
CREATE(RecSet);
RecSet.Open('select * from ' + DBFFile +
' where DATA >= # ' + FORMAT(DateFrom,0,'<Month,2>-<Day,2>-<Year4>') + '# and DATA <= #' +
FORMAT(DateTo,0,'<Month,2>-<Day,2>-<Year4>') + '#',Connection);
RecSet.MoveFirst;
//Выбор Типа документа
IF Setup."Document Type" = Doc::Оплата THEN Setup."Document Type":=1 ELSE Setup."Document Type":=6;
// Выбор Типа счета
IF Setup."Account Type" = Acc::Клиент THEN Setup."Account Type":=1 ELSE
IF Setup."Account Type" = Acc::Поставщик THEN Setup."Account Type":=2 ELSE Setup."Account Type":=3;
// Выбор Вида платежа
IF Setup."King Payment" = Pay::Почтой THEN Setup."King Payment":=1 ELSE
IF Setup."King Payment" = Pay::Телеграфом THEN Setup."King Payment":=2 ELSE
Setup."King Payment":=5;
WHILE NOT RecSet.EOF DO BEGIN
CLEAR( GenJournalLine ) ;
CLEAR( Vendor);
//Ввод данных в таблицу
GenJournalLine."Journal Template Name" := Setup."Pattern Name"; // Имя шаблона Журнала
GenJournalLine."Account Type" := Setup."Account Type"; // Тип Счета
GenJournalLine."Document Type" := Setup."Document Type"; // Тип документа
GenJournalLine."Document No." := FORMAT(RecSet.Fields.Item('NOM').Value); //Документ Но.
// разделение строки на 3(поле Text1,2,3)...
Name := FORMAT(RecSet.Fields.Item('NAME1').Value);
GenJournalLine."Text 1" := DELCHR( PADSTR( Name, 80 ), '<>',' ');
Name := DELSTR( Name, 1, 80);
GenJournalLine."Text 2" := DELCHR( PADSTR( Name, 80 ), '<>',' ');
Name := DELSTR( Name, 1, 80);
GenJournalLine."Text 3" := DELCHR( PADSTR( Name, 80 ), '<>',' ');
GenJournalLine."Bal. Account No." := BankAccountNo;
GenJournalLine."Bill-to/Pay-to No." := GenJournalLine."Account No.";
// Преобразование текста в дату!
ValuePostingDate:= FORMAT(RecSet.Fields.Item('DATA').Value);
Ok1 := EVALUATE(VarDatePostingDate, ValuePostingDate);
GenJournalLine."Posting Date":= VarDatePostingDate;
GenJournalLine."Due Date" := GenJournalLine."Posting Date";
//Преобразование текста в Decimal
ValueAmount:= FORMAT(RecSet.Fields.Item('SUM').Value);
Ok2 := EVALUATE(VarDecimalAmount, ValueAmount);
GenJournalLine.Amount:=VarDecimalAmount;
// Геренератор значения в поле Строка Но.
Auto:=0;
IF Auto = 0 THEN
BEGIN
GenJournalLineGen.SETCURRENTKEY("Line No.");
GenJournalLineGen.FIND('+');
Auto:=GenJournalLineGen."Line No." +1;
GenJournalLineGen.NEXT;
IF GenJournalLineGen.FIND('+') THEN
REPEAT
UNTIL GenJournalLineGen.NEXT = 0;
IF GenJournalLineGen."Line No." = 0 THEN
Auto:=1;
END;
GenJournalLine."Line No." := Auto;
GenJournalLine."Journal Batch Name" := Setup."Section Code";
GenJournalLine."Document Date" := GenJournalLine."Posting Date";
GenJournalLine."External Document No." := GenJournalLine."Document No.";
GenJournalLine."Payment Method" := Setup."King Payment";
GenJournalLine."Payment Subsequence" := FORMAT(RecSet.Fields.Item('OCHER').Value);
//Определение счет номера
TextKPP := FORMAT(RecSet.Fields.Item('KPP2').ActualSize);
IF TextKPP > '0' THEN
KPP:=FORMAT(RecSet.Fields.Item('KPP2').Value)
ELSE
KPP:='';
Vendor.SETCURRENTKEY( "VAT Registration No." ) ;
Vendor.SETFILTER( "VAT Registration No.", FORMAT(RecSet.Fields.Item('KOD2_BUYM').Value ) );
Vendor.SETFILTER( "KPP Code", COPYSTR(KPP, 1,MAXSTRLEN(Vendor."KPP Code" ) ) ) ;
IF Vendor.FIND('-') THEN BEGIN
GenJournalLine."Account No." := Vendor."No.";
GenJournalLine."VAT Registration No." := Vendor."VAT Registration No."; // ИНН
END;
GenJournalLine."Bill-to/Pay-to No." := GenJournalLine."Account No.";
GenJournalLine."VAT Registration No." := Vendor."VAT Registration No.";
//Определение Получатель кода Банка!
// KOR2 - BILL_KOR2
IF FORMAT(RecSet.Fields.Item('BILL_KOR2').ActualSize) >'0' THEN
KOR2:= FORMAT(RecSet.Fields.Item('BILL_KOR2').Value) ELSE KOR2:='';
VendorBankAccount.SETFILTER( "Vendor No.", GenJournalLine."Account No." );
VendorBankAccount.SETFILTER( BIC, FORMAT(RecSet.Fields.Item('KOD_KOR1').Value));
VendorBankAccount.SETFILTER( "Bank Branch No.",FORMAT(RecSet.Fields.Item('BILL_KOR1').Value));
VendorBankAccount.SETFILTER( "Bank Account No.",KOR2 );
IF(VendorBankAccount.FIND( '-' )) THEN
GenJournalLine."Beneficiary Bank Code" := VendorBankAccount.Code;

//Примен. Тип Документа
IF COPYSTR(FORMAT(RecSet.Fields.Item('NAME1').Value), 1, 15) = 'Оплата по счету' THEN
BEGIN
AppDocType:=COPYSTR(FORMAT(RecSet.Fields.Item('NAME1').Value), 1, 50);
GenJournalLine."Applies-to Doc. Type":=2;
Pos1 := STRPOS(AppDocType, 'от');
Pos2 := STRPOS(AppDocType, '№');
Pos3 := STRPOS(AppDocType, 'за');
Name1_Date:=COPYSTR(AppDocType,Pos1+2,(Pos3-Pos1)-4);
Name1_number:=COPYSTR(AppDocType,Pos2+1,(Pos1-Pos2)-1);
Name2_Date:=COPYSTR(Name1_Date,1,11);
//Примен.Документ Но
VendorLedgerEntry.SETFILTER( "Vendor No.",GenJournalLine."Account No.");
VendorLedgerEntry.SETFILTER("Document Date",Name2_Date);
VendorLedgerEntry.SETFILTER("External Document No.",Name1_number);
IF VendorLedgerEntry.FIND('-') THEN
GenJournalLine."Applies-to Doc. No." :=VendorLedgerEntry."Vendor No.";
END;


GenJournalLine.INSERT;
RecSet.MoveNext;
END;
RecSet.Close;
Connection.Close;
Старый 12.10.2007, 16:33   #2  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Скорей всего оишбка здесь:

ConnStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=' + Path + ';Extended Properties=DBASE 5.0;';
Connection.Open(ConnStr);
IF ISCLEAR(RecSet) THEN
CREATE(RecSet);
RecSet.Open('select * from ' + DBFFile +
' where DATA >= # ' + FORMAT(DateFrom,0,'<Month,2>-<Day,2>-<Year4>') + '# and DATA <= #' +
FORMAT(DateTo,0,'<Month,2>-<Day,2>-<Year4>') + '#',Connection);
RecSet.MoveFirst;

Но факт в том, что у меня работает, а у других нет!
Старый 15.10.2007, 05:16   #3  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
На каком Open происходит ошибка, при открытии соединения или запроса?
Возможно, дело в несоответствии региональных установок. Посмотрите также есть ли разница в настройках ODBC.
Старый 15.10.2007, 07:51   #4  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Поманипулировав кодом, пришел к мнению, что ошибка вызываеться имено в запросе, а не в соединении
Старый 15.10.2007, 09:54   #5  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
В настройках ODBC:
User DSN:
Microsoft Access Driver(*.mdb)
Microsoft dBase Driver(*.dbf)
Microsoft Excel Driver(*.xls)

System DSN:
Pervasive ODBC Engine Interface
SQL Server
Driver do Microsoft Excel(*.xls)
Старый 15.10.2007, 10:28   #6  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
удалил для проверки все драйвера из User, System DSN....и все равно у меня работает, не смотря на это...
Старый 16.10.2007, 14:53   #7  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Все спасибо...проблема решилась.
Вся проблема, как раз была из за файла *.dbf.
 


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

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

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