Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 20 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 64556 )
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #15 - 24. Октября 2007 :: 04:38
Печать  
Я уже думал над этим, когда писал оболочку для тестирования.
Там у меня окошко для ввода текста запроса, и кнопочка "Выполнить".
Так пришлось по этой причине пока отказаться от запуска запроса на OLE DB.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #16 - 24. Октября 2007 :: 04:59
Печать  
Вопрос знатокам индексов dbf файлов.
Сравниваю индексы в dd и в dds.
Справочники:
В sql есть индекс:
PARENTID,ISFOLDER,DESCR,ROW_ID - можно использовать как уникальный ключ для поставщика данных ТП.
В дбф:
PARENTID,ISFOLDER,DESCR(UPPER) - получается, нельзя использовать как уникальный ключ записи?
Или таки в дбф-индексы всегда неявно входит номер записи?
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: 1sqlite
Ответ #17 - 24. Октября 2007 :: 05:10
Печать  
orefkov писал(а) 24. Октября 2007 :: 04:59:
Вопрос знатокам индексов dbf файлов.
Сравниваю индексы в dd и в dds.
Справочники:
В sql есть индекс:
PARENTID,ISFOLDER,DESCR,ROW_ID - можно использовать как уникальный ключ для поставщика данных ТП.
В дбф:
PARENTID,ISFOLDER,DESCR(UPPER) - получается, нельзя использовать как уникальный ключ записи?
Или таки в дбф-индексы всегда неявно входит номер записи?

А зачем этот индекс использовать как ключ записи? Этот индекс используется только для упорядочивания записей. А для ключа, вроде, лучше использовать нормальный ID Улыбка
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #18 - 24. Октября 2007 :: 05:15
Печать  
Индексное выражение: parentid+STR(isfolder,1)+UPPER(descr)
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #19 - 24. Октября 2007 :: 07:54
Печать  
Nick писал(а) 24. Октября 2007 :: 05:15:
Индексное выражение: parentid+STR(isfolder,1)+UPPER(descr)

Оно не уникально.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: 1sqlite
Ответ #20 - 24. Октября 2007 :: 08:00
Печать  
Arta писал(а) 24. Октября 2007 :: 07:54:
Nick писал(а) 24. Октября 2007 :: 05:15:
Индексное выражение: parentid+STR(isfolder,1)+UPPER(descr)

Оно не уникально.

А у когото было другое мнение?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #21 - 24. Октября 2007 :: 08:12
Печать  
orefkov искал уникальный ключ.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #22 - 24. Октября 2007 :: 08:15
Печать  
Uzhast писал(а) 24. Октября 2007 :: 05:10:
А зачем этот индекс использовать как ключ записи? Этот индекс используется только для упорядочивания записей. А для ключа, вроде, лучше использовать нормальный ID Улыбка

Тогда сортировка в ТП будет по ID,  на не по наименованию
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: 1sqlite
Ответ #23 - 24. Октября 2007 :: 08:29
Печать  
Arta писал(а) 24. Октября 2007 :: 08:15:
Тогда сортировка в ТП будет по ID,  на не по наименованию

Нифига Улыбка Упорядочить можно по одному критерию, а ИД брать совсем из другого места.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #24 - 24. Октября 2007 :: 15:11
Печать  
Источник.УстКлючПорядка("DESCR,ID") - Упорядочит по дескру, и ключ будет уникальным. Но нет попадания в индекс.

Вариантов упорядочить записи в ТП по поему больше нет, только УстКлючПорядка?

Или я не понял о чем ты?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #25 - 25. Октября 2007 :: 04:51
Печать  
Вот именно, что для того чтобы допустим, вывести в ТП справочник с учетом группы, и упорядочив по наименованию, надо идти по индексу PARENTID_ISFOLDER_DESCR. Однако этот индекс в дбф не дает уникального ключа, и возобновить обход вниз от "нижней" видимой записи или вверх от верхней видимой записи не удастся.
Ну да ладно, чтонить придумаю.
Кстати, небольшие опыты показали, что дублирующиеся записи в индексе идут по порядку их номеров (recno).
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #26 - 25. Октября 2007 :: 07:33
Печать  
orefkov писал(а) 25. Октября 2007 :: 04:51:
Вот именно, что для того чтобы допустим, вывести в ТП справочник с учетом группы, и упорядочив по наименованию, надо идти по индексу PARENTID_ISFOLDER_DESCR. Однако этот индекс в дбф не дает уникального ключа, и возобновить обход вниз от "нижней" видимой записи или вверх от верхней видимой записи не удастся.
Ну да ладно, чтонить придумаю.
Кстати, небольшие опыты показали, что дублирующиеся записи в индексе идут по порядку их номеров (recno).


Видимо ты смотришь на справочник с длиной кода 0.
По умолчанию 1С создает 2 индекса с родителем :

PCODE                parentid+STR(isfolder,1)+UPPER(code)
PDESCR              parentid+STR(isfolder,1)+UPPER(descr)

как можно догадаться - первый - уникальный(для неподчиненных спр. с контролем уникальности)

А также для каждого реквизита с отбором индекс вида
VIP3677         parentid+STR(isfolder,1)+UPPER(sp3677)+UPPER(descr)
где sp3677 имя реквизита
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #27 - 25. Октября 2007 :: 07:46
Печать  
Ну это только "с контролем уникальности". У меня есть спавочники, где есть возможность вводить элементы с одинаковым кодом.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #28 - 25. Октября 2007 :: 07:48
Печать  
kiruha писал(а) 25. Октября 2007 :: 07:33:
orefkov писал(а) 25. Октября 2007 :: 04:51:
Вот именно, что для того чтобы допустим, вывести в ТП справочник с учетом группы, и упорядочив по наименованию, надо идти по индексу PARENTID_ISFOLDER_DESCR. Однако этот индекс в дбф не дает уникального ключа, и возобновить обход вниз от "нижней" видимой записи или вверх от верхней видимой записи не удастся.
Ну да ладно, чтонить придумаю.
Кстати, небольшие опыты показали, что дублирующиеся записи в индексе идут по порядку их номеров (recno).


Видимо ты смотришь на справочник с длиной кода 0.
По умолчанию 1С создает 2 индекса с родителем :

PCODE                parentid+STR(isfolder,1)+UPPER(code)
PDESCR              parentid+STR(isfolder,1)+UPPER(descr)

как можно догадаться - первый - уникальный(для неподчиненных спр. с контролем уникальности)

А также для каждого реквизита с отбором индекс вида
VIP3677         parentid+STR(isfolder,1)+UPPER(sp3677)+UPPER(descr)
где sp3677 имя реквизита

А мне нужно сортировать ПО НАИМЕНОВАНИЮ.
А PCODE - частный случай. Можно использовать как ключ ТП если только хочется вывести отсортировав по коду, у справочника есть код, у кода есть признак уникальности.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #29 - 25. Октября 2007 :: 08:10
Печать  
А если мы объявим ключ проядка как

PARENTID, ISFOLDER, UPPER(DESCR), ID


при наличии индекса

PDESCR  parentid+STR(isfolder,1)+UPPER(descr)


Т.е. зафиксируем первые 3 поля индекса.
Насколько это будет эффективно или неэффективно именно для DBF?
Сможем ли мы использовать этот индекс для эффективного позиционирования по значению ключа (по 4ем полям)?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 20
ОтправитьПечать