Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 16 ОтправитьПечать
Очень популярная тема (более 25 ответов) Провайдер OLE DB для ТП (число прочтений - 69100 )
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #135 - 24. Октября 2007 :: 09:54
Печать  
Ну попробуй так
Код
Выбрать все
INSERT INTO GridProviderIDS (ID,RECN) VALUES ("&strKeyField.", RN)

или так

INSERT INTO GridProviderIDS (ID,RECN) VALUES (&strKeyField., RN)
 

  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #136 - 24. Октября 2007 :: 09:55
Печать  
или я не про то вообще?
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #137 - 24. Октября 2007 :: 10:00
Печать  
spock писал(а) 24. Октября 2007 :: 09:54:
Ну попробуй так

С именами столбцов проблемы-то как раз нет Улыбка Шо в кавычках, шо без кавычек. А вот заставить Фокс проинтерпретировать текстовое значение в переменной strKeyField как имя поля текущей записи - хрен.

Да и от CLOSE TABLES неплохо было бы избавиться. Без него потребление CPU меньше на 5-10%, хотя память и подтекает...
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #138 - 24. Октября 2007 :: 10:19
Печать  
А если так:
Код
Выбрать все
IF TableAlias="_1sjourn" THEN
     StrKeyField=iddoc
ELSE
     StrKeyField=id
ENDIF
INSERT INTO GridProviderIDS (ID,RECN) VALUES (strKeyField, RN)
 



SCATTER FIELDS в массив (или набор переменных, при ключевом слове MEMVAR) передается список полей или, если пустой список, то все поля таблицы. Так что, если скобки не работают, а поля StrKeyField не существует, он резонно помещает в массив все поля.
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #139 - 24. Октября 2007 :: 10:24
Печать  
Alex_Bob писал(а) 24. Октября 2007 :: 10:19:
А если так:

Можно и так. Однако, это нам ограничивает возможный круг таблиц... Хотя, с другой стороны, а что еще, кроме справочников и журналов, может быть нужным отображать в динамическом провайдере? В конце концов остается еще статический...
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #140 - 24. Октября 2007 :: 10:28
Печать  
Теоретически еще может быть таблица документов (DH), но там упорядочивание можно включить только для IDDoc, что вряд ли интересно Подмигивание Похоже, действительно можно будет остановиться на справочниках и журналах...
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB для ТП
Ответ #141 - 24. Октября 2007 :: 10:30
Печать  
INSERT команда SQL, т.е. у тебя в процедуре  сразу два подхода
- навигационный и SQL

для вставки в навигационном режиме
http://www.mstu.edu.ru/education/materials/zelenkov/ch_4_8.html

APPEND BLANK        /* Добавить пустую запись. Она автоматически становится текущей */
REPLACE AU_ID WITH 90, AUTHOR WITH "L.Pinter" /* Изменить значения полей текущей записи */

Что касается открытия таблиц.
В самом объекте нельзя ли хранить список открытых таблиц и передавать
их в качестве параметра ?
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #142 - 24. Октября 2007 :: 10:34
Печать  
kiruha писал(а) 24. Октября 2007 :: 10:30:
INSERT команда SQL, т.е. у тебя в процедуре  сразу два подхода
- навигационный и SQL

Ну и что? Фокс это не запрещает. А в случае твоего варианта нужно две команды вместо одной Улыбка

kiruha писал(а) 24. Октября 2007 :: 10:30:
Что касается открытия таблиц.
В самом объекте нельзя ли хранить список открытых таблиц и передавать
их в качестве параметра ?

Тут, похоже, проблема не в открытии таблиц, а в чем-то другом. За один "сеанс навигации" по таблице сама таблица открывается один единственный раз. При последующих вызовах ХП проверяется, а не открыта ли уже таблица. Если открыта, то она используется. Так вот. Такой подход как раз и приводит к лику. А если при входе в ХП закрывать все и открывать нужную таблицу по новой, то все работает без ликов. Но медленнее. Вот и ХЗ, что делать с этим ликом.
  
Наверх
 
IP записан
 
Alex_Bob
Full Member
***
Отсутствует



Сообщений: 136
Местоположение: Липецк
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #143 - 24. Октября 2007 :: 10:35
Печать  
Еще есть операции, проводки, счета, периодические реквизиты.   Улыбка  А с другой стороны, если привязываемся к номеру записи, зачем вообще ID?
  

Необходимо время, чтобы восстановить хаос. (с) Дж. Буш (младший)
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #144 - 24. Октября 2007 :: 10:40
Печать  
Alex_Bob писал(а) 24. Октября 2007 :: 10:35:
Еще есть операции, проводки, счета, периодические реквизиты.   Улыбка  А с другой стороны, если привязываемся к номеру записи, зачем вообще ID?

ИД нужны, чтобы сделать из них строку и засунуть ее в IN (СтрокаИД) для SQL-запроса.

Тааак. В операциях у нас DOCID вместо IDDoc (офигеть). А у проводок ИД-поля и нет. Или отказаться от поддержки журнала проводок, или сделать возможность для ИД-поля использовать составные выражения...  Круглые глаза
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #145 - 24. Октября 2007 :: 10:46
Печать  
Вот интересно, а сможет ли Фокс оптимально выполнить такой запрос:
Код
Выбрать все
SELECT *
FROM
 1sentry
WHERE
 DOCID+NUMBER+CORNO IN (...)
 


Круглые глаза
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Провайдер OLE DB для ТП
Ответ #146 - 24. Октября 2007 :: 11:10
Печать  
Uzhast писал(а) 24. Октября 2007 :: 10:46:
Вот интересно, а сможет ли Фокс оптимально выполнить такой запрос:
Код
Выбрать все
SELECT *
FROM
 1sentry
WHERE
 DOCID+NUMBER+CORNO IN (...)
 


Круглые глаза

В виде
docid+STR(number,5)+STR(corno,5) IN (...) несомненно
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #147 - 25. Октября 2007 :: 19:20
Печать  
Вот что мне еще не нравится в ТП, так это то, что каждая строка данных должна представлять информацию о структуре данных:

1) Все строки имеют одинаковую структуру, поэтому нет смысла выносить в интерфейс строки средства получения данных о структуре - это надо вынести в провайдер.

2) Все равно строки должны куда-то лезть, чтобы получить информацию о структуре. Обычно они лезут в тот же провайдер. Ну и чего по 20 раз бегать туда-сюда? Улыбка В провайдер этот интерфейс и вся недолга!
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Провайдер OLE DB для ТП
Ответ #148 - 25. Октября 2007 :: 19:47
Печать  
Мне тоже не нравится.

Строка вообще без провайдера не живет - просто не имеет смысла.
Как чемодан без денег. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Провайдер OLE DB для ТП
Ответ #149 - 25. Октября 2007 :: 19:54
Печать  
kms писал(а) 25. Октября 2007 :: 19:47:
Мне тоже не нравится.

Строка вообще без провайдера не живет - просто не имеет смысла.
Как чемодан без денег. Улыбка

Может, вообще интерфейс строки убрать? Передавать, например, элементарный массив из CValue? Или оставить упрощенный интерфейс: только доступ к значению по индексу.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 16
ОтправитьПечать