Страница 1 из 1

Vih для ДО (Счета, ДО на продажу)

Добавлено: 17 дек 2007, 15:49
Ренат
Добрый день!
Есть необходимость программно создать ДО, а затем его заполнить. Со связыванием таблиц и дальнейшей вставкой почему то не получается - выскакивает ошибка "Запрещен доступ к файлу. Код ошибки 46. таблица 1102". Это таблица BaseDoc.
Дайте пожалуйста кто нибудь vih файл для работы с ДО.

Списиба.

Добавлено: 17 дек 2007, 23:52
edward_K
а вы базу не через диск копировали? и что за СУБД?. Обычно это либо права тока на чтения либо в первасиве атрибут у файла Readonly. Ну как вариант - не умеете писать лог.таблицы.

Добавлено: 18 дек 2007, 14:34
Ренат
БД - Pervasive.
Насчет того что не умею писать лог таблицы, может и так.

Код: Выделить всё

//Теперь надо сделать подцепки для создания ДО
         and basedoc.cOrg      == katorg_DO_FL.Nrec
         and basedoc.cPayment  == katpayment.Nrec
         and basedoc.cGrPol    == katorg_DO_FL.Nrec
         and basedoc.cGrOtpr   == katorg_DO_FL.Nrec
//       and basedoc.cStatDoc  == StatDoc.Nrec
         and basedoc.CNOTE     == KatNotes.Nrec
         and basedoc.cNalog    == KatNalog.Nrec

Далее вставляю командой Insert

Код: Выделить всё

                //Теперь создаем ДО и открываем его для редктирования
                Set BaseDoc.Name:=parDO_Name;
                Set BaseDoc.VidDoc:=201;
                Set BaseDoc.Vhodnal:=parDO_Nalog;
                Set  basedoc.cOrg     := katorg_DO_FL.Nrec;
                Set  basedoc.cPayment := katpayment.Nrec;
                Set  basedoc.cGrPol   := katorg_DO_FL.Nrec;
                Set  basedoc.cGrOtpr  := katorg_DO_FL.Nrec;
                Set  basedoc.CNOTE     := KatNotes.Nrec;

                Message('basedoc.cOrg='+string(basedoc.cOrg));
                Insert current BaseDoc;
                message('Создан документ '+BaseDoc.);
                Runinterface('Vschet',BaseDoc.Nrec);
При попытке выполенения команды Insert вылетает ошибка.

Добавлено: 18 дек 2007, 15:22
k_vit
Подцепки для создания ДО ? :-?
Зачем?

Добавлено: 18 дек 2007, 15:25
k_vit
Как-то странно получается....
Вы связываете BaseDoc с таблицами
И тут же пытаетесь вставить в BaseDoc данные из этих таблиц

Добавлено: 18 дек 2007, 15:27
Ренат
Я пытаюсь программно создать ДО

Добавлено: 18 дек 2007, 15:29
Ренат
до этого у меня стоит строка
ClearBuffer(#BaseDoc);

Добавлено: 18 дек 2007, 18:47
aleks1232321
Вообще всегда рекомендую использовать CLEARBUFFER(#ИМЯТАБЛИЦЫ).
Особенно в MSSQL.

Добавлено: 19 дек 2007, 01:15
edward_K
интересна секция from. А также ответ на сообщение k_vit.
Также выбирайте - либо set, либо insert current. Есть еще конструкция
insert into basedoc set список полей - которая по скорости конкурирует с clearbuffer + insert current. CLEARBUFFER в принципе не обязательна, можно просто сбросить Nrec в 0 и заполнить другие нужные поля, но сие приведет к замедлению операции вставки как это ни странно :).

Добавлено: 19 дек 2007, 11:15
Ренат
Может быть все таки мне кто нибудь дасть vih для работы с ДО ?
:?

Добавлено: 19 дек 2007, 12:09
edward_K
а разобраться почему не пашет слабо? Так то содержимое vih можно подглядеть в exe\galdoc.

Добавлено: 19 дек 2007, 15:58
Ренат
Разбираться долго. И почему то не хочеться 8-)

Добавлено: 20 дек 2007, 05:59
Алексей
Раз не хочется, тогда найдите того, кто разберётся :) Естественно не бесплатно...
Странный конечно подход...