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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.10.2007, 12:11   #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;
Старый 15.10.2007, 12:17   #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;

Но факт в том, что у меня работает, а у других нет!

После проверки кода Debugger, понял, что ошибка в запросе....но почему он не работает у других??? а у меня работает....
не пойму...
Старый 15.10.2007, 13:03   #3  
Голышев Михаил is offline
Голышев Михаил
Участник
 
106 / 10 (1) +
Регистрация: 03.07.2006
Сравните реестр на вашем компьютере и на остальных в этих ключах:
HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\
Старый 15.10.2007, 13:25   #4  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
будем проверять........=)
Старый 15.10.2007, 14:07   #5  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Проверив реестр получил:
1) HLM/SOFTWARE/Microsoft/Jet/4.0/Engines строка SandBoxMode имеет значение(2), а у меня 3.

2) HLM/SOFTWARE/Microsoft/Jet/4.0/ISAM Formats/dBase5.0 имеется дополнительная строка IndexFilter со значением: Индекс dBase(*.ndx;*.mdx), которой нету у меня!
3) Так же двоичный параметр IndexDialog имеет значение 01, у меня же 00..

Скорей всего проблема как раз в 2 и 3...щяс проверим... =)
Старый 15.10.2007, 14:32   #6  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
К сожеленью ни чего не помогло...страно....Когда удалаю не нежную строку IndexFilter и запускаю Навишен провожу транзакцию..вызываеться ошибка...захожу опять в реестр вооля...строка IndexFilter воскрес и строка IndexDialog возвращает значение 01....
Проблема не решилась... =(
Старый 15.10.2007, 15:51   #7  
Голышев Михаил is offline
Голышев Михаил
Участник
 
106 / 10 (1) +
Регистрация: 03.07.2006
Попробуйте обновить Jet

http://support.microsoft.com/kb/239114
Старый 16.10.2007, 09:15   #8  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
обновили Jet =( не помогло
Старый 16.10.2007, 12:10   #9  
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;';
не хватает логина и пароля?
Старый 16.10.2007, 14:55   #10  
by_HT is offline
by_HT
Участник
 
195 / 10 (1) +
Регистрация: 12.10.2007
Все спасибо проблема решилась...Все дело было в файле *.dbf
 


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

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

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