Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Размерность строкового поля в результирующей ТЗ запроса к mdb (число прочтений - 6770 )
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Размерность строкового поля в результирующей ТЗ запроса к mdb
23. Октября 2008 :: 04:08
Печать  
Код программы:

Если ПустоеЗначение(ВыборИмяФайла)=1 тогда      Сообщить("Не указан файл выгрузки.");      Возврат;      КонецЕсли;
     
РС = СоздатьОбъект("OLEDBData");
РС.Соединение("Driver={Microsoft Access Driver (*.mdb)}Смехbq="+ВыборИмяФайла+";Uid=Admin;Pwd=");
Команда=РС.СоздатьКоманду();
   
Команда.Отладка(1);
     
тзПриходников1С=СоздатьОбъект("ТаблицаЗначений");
Команда.ВыполнитьИнструкцию("SELECT * FROM Приходники1С where (ID_ПРИХОДНЫЙ_ОРДЕР = ости)=1,""," AND (ПромерочнаяВедомость = '"+СокрЛП(ВыборНомВедомости)+"')"), тзПриходников);


все работает, но .... в одно из полей таблицы имеет тип "Строка" длинна 50 символов, но при загрузке в таблицу значений попадают только первые 23 символа с обрезанием по 3-му пробелу! Хотелось бы все 50 символов, как с этим бороться?

С уважением, Станислав.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #1 - 23. Октября 2008 :: 04:12
Печать  
А как в Access дополнить строку пробелами до нужной длины?
  
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #2 - 23. Октября 2008 :: 04:28
Печать  
Nick писал(а) 23. Октября 2008 :: 04:12:
А как в Access дополнить строку пробелами до нужной длины?

зачем дополнять и до какой длины?  мне из Акцесса нужно получить всю строку целиком, а она обрезается по 3-му пробелу?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #3 - 23. Октября 2008 :: 04:32
Печать  
OnCheck писал(а) 23. Октября 2008 :: 04:28:
Nick писал(а) 23. Октября 2008 :: 04:12:
А как в Access дополнить строку пробелами до нужной длины?

зачем дополнять и до какой длины?  мне из Акцесса нужно получить всю строку целиком, а она обрезается по 3-му пробелу?


Я подозреваю что драйвер "Акцесса"  определяет длину строки по первой строке попавшей в выборку, т.е. если это строка длиной в 23 символа то все остальные строки обрежутся. По крайней мере в VFP так
  
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #4 - 23. Октября 2008 :: 04:39
Печать  
Nick писал(а) 23. Октября 2008 :: 04:32:
OnCheck писал(а) 23. Октября 2008 :: 04:28:
Nick писал(а) 23. Октября 2008 :: 04:12:
А как в Access дополнить строку пробелами до нужной длины?

зачем дополнять и до какой длины?  мне из Акцесса нужно получить всю строку целиком, а она обрезается по 3-му пробелу?


Я подозреваю что драйвер "Акцесса"  определяет длину строки по первой строке попавшей в выборку, т.е. если это строка длиной в 23 символа то все остальные строки обрежутся. По крайней мере в VFP так

Тогда бы попадала хотя бы одна строка целиком из двух более чем 24! (я ошибся не 23, а 24), но не попадает ни одна целиком, с пробелом это не связано.  Нерешительный
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #5 - 23. Октября 2008 :: 04:42
Печать  
А в самом Access запрос нормально отрабатывает?
  
Наверх
ICQ  
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #6 - 23. Октября 2008 :: 04:58
Печать  
OnCheck писал(а) 23. Октября 2008 :: 04:08:
Код программы:

Если ПустоеЗначение(ВыборИмяФайла)=1 тогда      Сообщить("Не указан файл выгрузки.");      Возврат;      КонецЕсли;
     
РС = СоздатьОбъект("OLEDBData");
РС.Соединение("Driver={Microsoft Access Driver (*.mdb)}Смехbq="+ВыборИмяФайла+";Uid=Admin;Pwd=");
Команда=РС.СоздатьКоманду();
   
Команда.Отладка(1);
     
тзПриходников1С=СоздатьОбъект("ТаблицаЗначений");
Команда.ВыполнитьИнструкцию("SELECT * FROM Приходники1С where (ID_ПРИХОДНЫЙ_ОРДЕР = ости)=1,""," AND (ПромерочнаяВедомость = '"+СокрЛП(ВыборНомВедомости)+"')"), тзПриходников);


все работает, но .... в одно из полей таблицы имеет тип "Строка" длинна 50 символов, но при загрузке в таблицу значений попадают только первые 23 символа с обрезанием по 3-му пробелу! Хотелось бы все 50 символов, как с этим бороться?

С уважением, Станислав.





Создай ТЗ сам с полями нужной длины  (тзПриходников.НоваяКолонка() ... ) ,а запрос выполняй командой
Код
Выбрать все
Команда.ВыполнитьИнструкцию(ТекстЗапроса, тзПриходников,0); 

обрати внимание на 3 параметр = 0.
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #7 - 23. Октября 2008 :: 05:18
Печать  
Nick писал(а) 23. Октября 2008 :: 04:42:
А в самом Access запрос нормально отрабатывает?

да, сформировал простейший запрос выводит нормальные - полные строки.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #8 - 23. Октября 2008 :: 05:22
Печать  
OnCheck писал(а) 23. Октября 2008 :: 05:18:
Nick писал(а) 23. Октября 2008 :: 04:42:
А в самом Access запрос нормально отрабатывает?

да, сформировал простейший запрос выводит нормальные - полные строки.


Простейший не надо нужно тот же
  
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #9 - 23. Октября 2008 :: 05:32
Печать  
Nick писал(а) 23. Октября 2008 :: 05:22:
OnCheck писал(а) 23. Октября 2008 :: 05:18:
Nick писал(а) 23. Октября 2008 :: 04:42:
А в самом Access запрос нормально отрабатывает?

да, сформировал простейший запрос выводит нормальные - полные строки.


Простейший не надо нужно тот же


Сляпал тот же, выводит, работает нормально.
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #10 - 23. Октября 2008 :: 05:49
Печать  
Создай ТЗ сам с полями нужной длины  (тзПриходников.НоваяКолонка() ... ) ,а запрос выполняй командой
Код
Выбрать все
Команда.ВыполнитьИнструкцию(ТекстЗапроса, тзПриходников,0); 

обрати внимание на 3 параметр = 0. [/quote]

Сделал так:

     РС = СоздатьОбъект("OLEDBData");
     РС.Соединение("Driver={Microsoft Access Driver (*.mdb)}Смехbq="+ВыборИмяФайла+";Uid=Admin;Pwd=");
Команда=РС.СоздатьКоманду();
   
Команда.Отладка(1);
     
тзПриходников1С=СоздатьОбъект("ТаблицаЗначений");
     тзПриходников1С.НоваяКолонка("НОМ_ПРИХОДНЫЙ_ОРДЕР","Строка",50,,"Строка");
тзПриходников1С.НоваяКолонка("АртикулПостащика","Строка",50,,"Строка");

Команда.ВыполнитьИнструкцию("SELECT * FROM Приходники1С where (ID_ПРИХОДНЫЙ_ОРДЕР = '"+ДатаНомерСчетаФактуры+"')",тзПриходников1С,0);
тзПриходников1С.ВыбратьСтроку();

результат к сожалению не изменился  Нерешительный,  зато узнал об этом параметре!  Смех

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #11 - 23. Октября 2008 :: 05:52
Печать  
Ну можно еще посоветовать убрать * и задать явное перечисление полей в том же порядке что они определены в Таблице значений.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #12 - 23. Октября 2008 :: 05:57
Печать  
Вот например FoxPro автоматически при коннекте через этот драйвер к таблице Access генерирует код:

Код
Выбрать все
SELECT St1.Êîä, St1.st;
 FROM ;
     st1 St1

DBSetProp(ThisView,"View","SendUpdates",.F.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","ShareConnection",.F.)
DBSetProp(ThisView,"View","AllowSimultaneousFetch",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","st1")
DBSetProp(ThisView,"View","WhereType",3)

DBSetProp(ThisView+".êîä","Field","DataType","I")
DBSetProp(ThisView+".êîä","Field","UpdateName","st1.Êîä")
DBSetProp(ThisView+".êîä","Field","KeyField",.F.)
DBSetProp(ThisView+".êîä","Field","Updatable",.T.)

DBSetProp(ThisView+".st","Field","DataType","C(50)")
DBSetProp(ThisView+".st","Field","UpdateName","st1.st")
DBSetProp(ThisView+".st","Field","KeyField",.F.)
DBSetProp(ThisView+".st","Field","Updatable",.T.)

 



так что не всё так просто
  
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #13 - 23. Октября 2008 :: 06:38
Печать  
Z1 писал(а) 23. Октября 2008 :: 05:52:
Ну можно еще посоветовать убрать * и задать явное перечисление полей в том же порядке что они определены в Таблице значений.

тоже не помогло. Нерешительный
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: Размерность строкового поля в результирующей ТЗ запроса к mdb
Ответ #14 - 23. Октября 2008 :: 06:40
Печать  
Nick писал(а) 23. Октября 2008 :: 05:57:
Вот например FoxPro автоматически при коннекте через этот драйвер к таблице Access генерирует код:

Код
Выбрать все
SELECT St1.Êîä, St1.st;
 FROM ;
     st1 St1

DBSetProp(ThisView,"View","SendUpdates",.F.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","ShareConnection",.F.)
DBSetProp(ThisView,"View","AllowSimultaneousFetch",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","st1")
DBSetProp(ThisView,"View","WhereType",3)

DBSetProp(ThisView+".êîä","Field","DataType","I")
DBSetProp(ThisView+".êîä","Field","UpdateName","st1.Êîä")
DBSetProp(ThisView+".êîä","Field","KeyField",.F.)
DBSetProp(ThisView+".êîä","Field","Updatable",.T.)

DBSetProp(ThisView+".st","Field","DataType","C(50)")
DBSetProp(ThisView+".st","Field","UpdateName","st1.st")
DBSetProp(ThisView+".st","Field","KeyField",.F.)
DBSetProp(ThisView+".st","Field","Updatable",.T.)

 



так что не всё так просто


не понятно  Улыбка ни чего. А зачем ФоксПро? я и на Акцесске построил такой же запрос. И он все нормально мне показал. То есть полные строки.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать