|
|
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
1С 7.5 связал 1С файлы с аксом - без проблем... нашел нужные таблицы - интернет в помощь... строю запрос ... ID поля в 1С представляют собой стринг типа 6a, 6b ...6A....61...6~ (это к примеру) но для аска 6t и 6T порову..., как тогда связывать таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 22:11 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
Не уверен, но думаю можно изменить соответствующую настройку реестра. Насколько я понимаю в 1C формат .dbf. Соответственно в ISAM разделе реестра для Access надо прописать что-от типа Exact=On для бинарного сравнения строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 23:26 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
Exact 0 или -1, те в реестре храниться не строка On Off а число 0, -1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 23:29 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\3.5\Engines Если я правильно понял вопрос то это по-моему то что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 23:32 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
а это не отразится на полях где числовые значения? или они так же будут сравниваться как бинарные (им , впрочем, это должно быть пофиг)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2004, 10:11 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
ежели кто может по-подробнее, а то у меня чё-то не вышло я присоединяю файлы 1С как Dbase 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 21:44 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
Те Access не понимает формат? Тогда не знаю. Но мне самому интересно как извлечь что-то из 1C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2004, 21:58 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
Вообще-то, не очень понятно из формулировки, что же все-таки нужно. автор но для аска 6t и 6T порову..., как тогда связывать таблицы? Что значит "порову..."? Что это значит вообще? Если нужно чтобы Access различал регистр, то надо сделать CollatingSequence=Ansi Если нужно чтобы Access не различал регистр, то надо сделать CollatingSequence=International почему это так не знаю. Я пробовал на файле (.dbf) Exact = 00 или Exact = 01 действительно не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2004, 00:11 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
не Ansi а Ascii ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2004, 00:13 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
порову=поровну, т.е. однофикственно, т.е. 6t=6T CollatingSequence=Ansi Если нужно чтобы Access не различал регистр, то надо сделать CollatingSequence=International в каком месте? мне надо, чтоб в запросе при связи двух таблиц по строковым полям поля с 6t и 6T не связывались. из 1С можно вытащить (7.5) у меня есть мдб , на его примере можно куда скинуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 08:11 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
Насколько я понял вопрос сводится к следующему: Может ли Access по-умолчанию сравнивать строки как бинарные данные? Те во всех JOIN-ах использовать сравнение строк с учетом регистра. Думаю что нет, не может. Но хотелось бы услышать еще мнения на этот счет. Как решить эту проблему. Нужно вспомнить, что Access может делать JOIN не только по значениям поля, но и по выражениям. Те мы можем сделать такой JOIN Код: plaintext 1. Тогда получим то, что нужно, те бинарное сравнение. Если в таблицах T1, T2 есть индексы для полей T1.Field1, T2.Field2, то можно слегка оптимизировать запрос, написав Код: plaintext 1. 2. 3. 4. 5. Те мы по JOIN выбираем записи пользуясь индексом, а далее отсеиваем ненужные записи с помощью WHERE. В некоторых случаях, возможно, это будет быстрее. Что касается CollatingSequence. Как ни странно, для присоединенных таблиц можно задать способ сравнения текстовых строк. CollatingSequence = "Ascii" - сравнение бинарное CollatingSequence = "International" - сравнение без учета регистра Те если бы все таблицы в JOIN выражении были бы присоединенными, то можно было бы это использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 14:22 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
я бы хотел уточнить в каком месте дада сделать эту установку CollatingSequence = "Ascii" - сравнение бинарное CollatingSequence = "International" - сравнение без учета регистра а таблицы 1С все присоединенные. вариант предложенный я буду пробовать. только все функции замедляют работу..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 15:01 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
простой эксперимент: 1. создаем таблицу формат dbase5 (из Acs97, экспортом). Подключаем и видим, что связывается с учетом регистра Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. смотрим, чем оно этому обязано: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ?GetColOrd db.CollatingOrder = 1049 tdf.CollatingOrder = 1024 для справок: ?dbSortGeneral 1033 ?dbSortNeutral 1024 ?dbSortUndefined -1 ?dbSortCyrillic 1049 ______ резюме: читай справку по порядку сортировки. (? можно ли задать при подключении TableDef). ЗЫ: при связи с родной аксовской таблицой (1049), связь идет с учетом регистра (как 1024). ЗЫ1: Плюсы (супротив связи с использованием функции) - работа по индексам. Минусы - надо явно следить за порядком сортировки при подключении. Боюсь, не обойдется без эксцессов. (Не уверен, что параметры isam dbase5 на различных машинах (или для различных jet-ов (3.5/4) одной машины: Параметры инициализации dBASE Папка Jet\3.5\Engines\Xbase содержит параметры инициализации драйвера Msxbse35.dll, используемого при доступе к внешним источникам данных dBASE. В следующем примере демонстрируются типичные значения элементов данной папки. - из справки (Инициализация драйвера баз данных dBASE): (параметры реестра Папка Jet\3.5\Engines\Xbase) win32=<путь>\MSXBSE35.dll NetworkAccess=On PageTimeout=600 INFPath=C:\DBASE\SYSTEM CollatingSequence=ASCII DataCodePage=OEM Deleted=On Century=Off Date=MDY Mark=47 Exact=Off где: CollatingSequence Указывает используемый при сортировке порядок символов для всех таблиц dBASE, создаваемых или открываемых с помощью ядра Microsoft Jet. Возможные значения: "ASCII" или "International". По умолчанию задается значение "ASCII". Значения имеют тип String в Windows 95 и Windows NT 4.0 или тип REG_SZ в Windows NT 3.51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 15:24 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
ключ реестра \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\3.5\Engines\XBase для Jet 4.0 заменить 3.5 на 4.0 ну я думаю это и так понятно. Вообще, я бы просто использовал вариант с функцией. Индексы еще надо как-то подключать к Access, а может он их сам автоматически подхватит. Я не знаю. Те в этом варианте много неопределенностей. А нужно ли со всем этим связываться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2004, 16:51 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
понял , буду пробовать.... со всем этим связываться стоит или не стоит - не знаю... а с 1С требуется. вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 15:01 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\3.5\Engines\XBase такого у мея нет.. а такое есть (XBase есть только в ветке с 4.0) \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\4.0\Engines\XBase \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Jet\3.5\Engines\..... win32=<путь>\MSXBSE35.dll NetworkAccess=On PageTimeout=600 INFPath=C:\DBASE\SYSTEM CollatingSequence=ASCII - менял... DataCodePage=OEM Deleted=On Century=Off Date=MDY Mark=47 Exact=Off менял... (двоичное, правда, делал 00 или 11) хотя это не помогло..... или я чё-то не так или не то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 21:40 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
вот этот вариант мне больше нравится SELECT [V7_Документ Счет].Клиент, [V7_Справочник Клиенты].[ID object], [V7_Документ Счет].[ID Document's], [V7_Справочник Клиенты].[ID parent obj], [V7_Справочник Клиенты].[object description] FROM [V7_Справочник Клиенты] INNER JOIN [V7_Документ Счет] ON [V7_Справочник Клиенты].[ID object] = [V7_Документ Счет].Клиент WHERE (((StrComp([V7_Справочник Клиенты].[ID object],[V7_Документ Счет].[Клиент],0))=0)); что соответствует ... INNER JOIN ... ON T1.Field1 = T2.Field2 ... WHERE ON (StrComp(T1.Field1, T2.Field2, 0) = 0) без ON во первых может быть представлено в конструкторе запросов (облегчает жизнь) во вторых по скорости не уступает первоисточнику скажем это не совсем красивое и правильное решение (хотя и работоспособное) на мой взгляд. красивее было бы заставлять акс сравнивать с учетом регистра или без для каждого запроса индивидуально , а не для все базы (хотя и это не удалось). ежели у кого есть предложения - буду рад услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2004, 22:25 |
|
||
|
1С и Аксесс......
|
|||
|---|---|---|---|
|
#18+
авторхотя это не помогло..... или я чё-то не так или не то менять надо в ветке для твоего jet (97 -3.5, >=2000 - 4) менять надо CollatingSequence. действие это возимеет после перезагрузки аксеса (вернее - енжайна) (т.е. надо выходить из аксеса-то). Не уверен, что полсе этого не потребуется ЗАНОВО подключить файл dbf (не поменять строку подключение, а "пересоздать") и заново задать индексы, если они были. (аксесс сохраняет в определении таблиц (в т.ч. подключенных) много всего, в т.ч. может (думаю даже должен) хранить порядок сортировки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2004, 18:21 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32411126&tid=1676310]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
266ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 190ms |
| total: | 542ms |

| 0 / 0 |
