Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Проблема с периодическими реквизитами ДБФ (число прочтений - 1393 )
Danilyen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 16. Сентября 2008
Проблема с периодическими реквизитами ДБФ
03. Октября 2008 :: 08:37
Печать  
Обсуждалась тема по "Проблема с периодическими реквизитами"
Пригодилась, но с-ка вылетает, выдавая сообщение "Инструкция по адресу "0x240af173" обратилась к памяти по адресу "0х00000000" Память не может быть "read". Что за прикол такой?!!
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Проблема с периодическими реквизитами ДБФ
Ответ #1 - 03. Октября 2008 :: 10:26
Печать  
После чего вылетает?
Где обсуждалось?
Код?
Какое отношение к прямым запросом?
  
Наверх
 
IP записан
 
Danilyen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 16. Сентября 2008
Re: Проблема с периодическими реквизитами ДБФ
Ответ #2 - 07. Октября 2008 :: 01:04
Печать  
ДБФ - Комплексная 7. Нужно вытащить сотрудников с текущим состоянием физлица. Вот код, с-ка вылетает с вышеописанным сообчением!

           БД=СоздатьОбъект("OLEDBData");
           СтрокаСоединения="Provider=VFPOLEDB.1;Data Source="+DBpath+";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN=""";
           БД.ПрисоединитьИБ(DBpath+"\",СтрокаСоединения);
           РС=БД.СоздатьКоманду();
           

           МД.ПрисоединитьМД(КаталогБазыОле+"1cv7.md");
           Текст="
           | SELECT
           | Сотр.Code  AS Код
           |,Сотр.Descr as ФИО      
           |,cСостояние.value as Состояние
           |,cПодразделение.Value as   КодПодр
           |,Подр.Code as КодПодразделения 
           |,Долж.Descr as Должность
           |,cДолжность.Value as Дол
           |FROM $Справочник.Сотрудники as Сотр
           |INNER JOIN
           |(
           |
           |   SELECT   DISTINCT
           |       c_dt.objid as objid,
           |       c_dt.value as value
           |   FROM 1sconst as c_dt
           |   WHERE
           |       c_dt.date IN (SELECT MAX(c.date)
           |           FROM 1sconst as c
           |           WHERE
           |               (c.date <= :ВыбДата ~~)
           |               AND (c.id = $ИсторияРеквизита.Сотрудники.СостояниеФизлица)
           |               AND (c.objid = c_dt.objid)
           |       ) AND (c_dt.id = $ИсторияРеквизита.Сотрудники.СостояниеФизлица)
           //|) as cСостояние ON cСостояние.objid = Сотр.id AND cСостояние.value = '    66   '   
           |) as cСостояние ON cСостояние.objid = Сотр.id
           |
           |INNER JOIN
           |(
           |   SELECT   DISTINCT
           |       c_dt.objid as objid,
           |       c_dt.value as value
           |   FROM 1sconst as c_dt
           |   WHERE
           |       c_dt.date IN (SELECT MAX(c.date)
           |           FROM 1sconst as c
           |           WHERE
           |               (c.date <= :ВыбДата ~~)
           |               AND (c.id = $ИсторияРеквизита.Сотрудники.Подразделение)
           |               AND (c.objid = c_dt.objid)
           |       ) AND (c_dt.id = $ИсторияРеквизита.Сотрудники.Подразделение)
           |) as cПодразделение ON cПодразделение.objid = Сотр.id 
           |
           |LEFT JOIN (SELECT * FROM $Справочник.Подразделения AS Под ) as Подр  ON Подр.ID =   cПодразделение.Value   
           | -- Должность   
           |
           |INNER JOIN
           |(
           |
           |   SELECT   DISTINCT
           |       c_dt.objid as objid,
           |       c_dt.value as value
           |   FROM 1sconst as c_dt
           |   WHERE
           |       c_dt.date IN (SELECT MAX(c.date)
           |           FROM 1sconst as c
           |           WHERE
           |               (c.date <= :ВыбДата ~~)
           |               AND (c.id = $ИсторияРеквизита.Сотрудники.Должность)
           |               AND (c.objid = c_dt.objid)
           |       ) AND (c_dt.id = $ИсторияРеквизита.Сотрудники.Должность)
           |) as cДолжность ON cДолжность.objid = Сотр.id
           |
           |LEFT JOIN (SELECT * FROM $Справочник.Должности AS Дол ) as Долж  ON Долж.ID =  cДолжность.Value   
           |
           |
           |WHERE Сотр.ISFOLDER =2      
           |And Сотр.IsMark = ''
           |ORDER BY Сотр.DESCR
           |";
           РС.отладка(1);
           РС.УстановитьТекстовыйПараметр("ВыбДата",КонДата);
           ТЗ=РС.ВыполнитьИнструкцию(Текст );
           ТЗ.ВыбратьСтроку();
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Проблема с периодическими реквизитами ДБФ
Ответ #3 - 07. Октября 2008 :: 04:44
Печать  
Для начала попробовать
1. Скачать последний 1Cpp.dll
2. Скачать последний драйвер vfpoledb
http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA...
3.Установить строку подключения правильную

Цитата:
БД=СоздатьОбъект("OLEDBData");
Рез= БД.Соединение("
     |Provider=VFPOLEDB.1;
//      |Deleted=Yes;
     |Null = Yes;
     |Exclusive = No;
     |SourceType = DBF;
     |Data Source=" + DBpath + ";
     |Mode=ReadWrite;
     |Extended Properties="""";
     |User ID="""";
     |Password="""";
     |Mask Password=False;
     |Collating Sequence=MACHINE;
     |DSN=""""");

4. Цитата:
ТЗ=РС.ВыполнитьИнструкцию(Текст );
заменить на Цитата:
РС.Выполнить(Текст );
-
возможна проблема связана с большой ТЗ
  
Наверх
 
IP записан
 
Danilyen
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 16. Сентября 2008
Re: Проблема с периодическими реквизитами ДБФ
Ответ #4 - 07. Октября 2008 :: 07:05
Печать  
vfpoledb - стоит последний, скачал последний 1с++, изменил строку соединения ......!!!! Всё окей! Без проблем! Данке шён!!! Очень довольный
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать