Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из MSSQL поле binary в integer VFP9 / 25 сообщений из 30, страница 1 из 2
13.09.2007, 19:23
    #34799021
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Давно крутится 1с (MSSQL6.5). Нужно скачать данные в Фокс так, чтобы ключ.поле бинери стало ключ.полем типа интеджер. Цель-ключ должен быть читабельным в таблицах Фокса для дальнейшего использования, а не путанным. Как такое сделать?
...
Рейтинг: 0 / 0
13.09.2007, 20:41
    #34799123
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Что значит "ключ.поле бинери"? То есть на сервере оно binary? Точно? Что-то я не припомню у 1С таких полей, тем более ключевых. Для чего ключ делать читабельным? Кто и зачем его будет читать?
...
Рейтинг: 0 / 0
14.09.2007, 12:46
    #34800549
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Я его буду видеть и читать, чтоб корректно и легко пользоваться значениями. В 1с поля ID и ParentID такого типа. Вот интересно, есть ли взаимно однозначное соответствие этих типов? А значит и функции преобразования, которой я не знаю?
...
Рейтинг: 0 / 0
14.09.2007, 12:53
    #34800584
Из MSSQL поле binary в integer VFP9
Покажите ка ID и ParentID таких типов.
Структуру и значения.
И Вы будете ручками эти значения куда-то вводить?
...
Рейтинг: 0 / 0
14.09.2007, 14:51
    #34801098
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Нет же, не вручную. То, что уже введено в 1с, перегоню в Фокс, и здесь мне надо заместить тип бинари на интеджер, а далее программа будет работать с фокстаблицами, где ключ будет автоматич. присваиваться (+1), потому что я не знаю сейчас как формируется новый уникальный ключ типа бинари. Вот для этого мне нужен тип интеджер для ключа. А еще я посмотрел, что ключ в табл 1с действительно не ID, а ROW_ID типа интеджер, тут прошу прощения, но все-равно у меня ключом будет именно ID, а он в 1с типа бинари. Я, конечно, могу просто взять вместо ID ROW_ID, но как тогда быть с ParentID, который согласуется с ID, а не с ROW_ID, и он тоже типа бинари. Например, d 1c таблица SC72: ROW_ID integer (primary key), ID binary, parentid binary,...
...
Рейтинг: 0 / 0
14.09.2007, 15:03
    #34801166
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Ну дык, надо вернуть с сервера конвертированное значение bin в int

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create table #t (f1 binary( 50 ))

insert into #t select cast( 1  as binary ( 50 ))

select * from #t

select cast(f1 as int) from #t

drop table #t
...
Рейтинг: 0 / 0
14.09.2007, 15:11
    #34801216
Из MSSQL поле binary в integer VFP9
Как же все таки тяжко общаться, когда вместо ответов на вопросы сыплется длинная цепь рассуждений, сделанная на основании хоть и одного неправильного утверждения, но не ставшаяся от это истинной. Я просил предоставить значения поля типа binary. Где оно?
То, что поле типа binary еще не делает содержимое такого поля двоичным.
Там хранятся строки. А тип binary сделан для исключения конвертаций содержиого такого поля при неправильных настройках сервера и/или клиента. А для генерации используется 36-ричная система. Только зачем генерировать-то? Чтобы потом обратно в 1С запихать? Чревато! СтОит ли это делать?
...
Рейтинг: 0 / 0
14.09.2007, 15:15
    #34801247
Из MSSQL поле binary в integer VFP9
Паш, вопрошавшему твой совет не поможет. Он просто плохо знает структуру данных 1С и делает неправильный вывод о содержимом идентификаторов. Полученные им числа будут с разрывами, закономерность расположения которых он навряд ли поймет.
...
Рейтинг: 0 / 0
14.09.2007, 15:20
    #34801278
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Это другой же разговор, более веселый. Но попробовав подсказку, получил в ответ "'cast' is not a recognized built-in function name". На беду версия 6.5. Что ж делать, есть ли способы? Или на край сбэкапить и восстановить в MSSQL-2000, а там работает cast?
...
Рейтинг: 0 / 0
14.09.2007, 15:23
    #34801300
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Ах, да, прости, дружище! 0x202031384f202020 0x2020204b71202020 - это ид и парентид.
...
Рейтинг: 0 / 0
14.09.2007, 15:24
    #34801307
Из MSSQL поле binary в integer VFP9
Ну а теперь внимательно посмотри на позанное. Ничего не напоминает?
...
Рейтинг: 0 / 0
14.09.2007, 15:26
    #34801319
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
ЗЫ. Согласись, грустно на эти значки смотреть, а как формировать новые такие значения-вообще не знаю.
...
Рейтинг: 0 / 0
14.09.2007, 15:33
    #34801354
Из MSSQL поле binary в integer VFP9
пробуй:

Код: plaintext
1.
2.
create table #t (id binary( 8 ), parentid binary( 8 ))
insert into #t values (0x202031384f202020, 0x2020204b71202020 )
select convert(char( 8 ), id), convert(char( 8 ), parentid) from #t
...
Рейтинг: 0 / 0
14.09.2007, 15:33
    #34801356
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Ну что делать, паника и несобранность подводит сегодня. Вчера сказали, чтоб переписал 1с на ВФП9+Оракл и будем добавлять свою специфику. Но там последовательности, ключи-целые. Кажется, не пропустил ничего.
внимательно посмотри на позанное. Ничего не напоминает? -тут объясни, наверное, все очень просто для тебя, а я, как модно говорить, туплю.
...
Рейтинг: 0 / 0
14.09.2007, 15:39
    #34801386
Из MSSQL поле binary в integer VFP9
выполни в фоксе:
Код: plaintext
?chr(0x20)+chr(0x20)+chr(0x31)+chr(0x38)+chr(0x4f)+chr(0x20)+chr(0x20)+chr(0x20)
...
Рейтинг: 0 / 0
14.09.2007, 15:42
    #34801404
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Дружище, спасибо! Вот что получилось в QUERY с select convert(integer,id) from sc72:
857743392
874520608
891297824
908075040
924852256
941629472
958406688
1092624416
1109401632
1126178848 .
Последние, надеюсь, вопросы. 1)Если бинари уникальны, то эти целые тоже уникальны?
2)Почему вывод в 12 позиций и выравнивание по левому краю? Тут без подвоха?
...
Рейтинг: 0 / 0
14.09.2007, 15:47
    #34801425
Из MSSQL поле binary в integer VFP9
Вы принципиально не читаете написанное мной? Что Вы так уперлись в инт? На каком основании? Почему именно инт? Ответы на остальные вопросы бессмысленны без ответа эти вопросы.
...
Рейтинг: 0 / 0
14.09.2007, 15:55
    #34801467
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Дружище, не обижайся. Вот ты помог, и второй вопрос отпал, конечно это числовой текст, да и первый сейчас проверю, 99%, что взаимно однозначное соответствие типов. А интеджер- чтобы когда я в новой программе, где данные будут на Оракле, захочу ввести новую запись, ключ автоматом сформируется с помощью объекта Оракл "ПОСЛЕДОВАТЕЛЬНОСЬ", где тип именно целое, интеджер, такая нехитрая логика. Еще раз, спасибо!
...
Рейтинг: 0 / 0
14.09.2007, 15:59
    #34801478
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Преобразование из 36-ричной в десятичную:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
func ch36to10
para lcValue
lnRet= 0 
do while !empty(lcValue)
   lnCifra=asc(lcValue)
   lcValue=substr(lcValue, 2 )
   do case
      case lnCifra= 32 
           * пробел
      case lnCifra< 58 
           lnRet=lnRet* 36 +lnCifra- 48 
      case lnCifra< 91 
           lnRet=lnRet* 36 +lnCifra- 55 
      otherwise
           lnRet=lnRet* 36 +lnCifra- 61 
   endcase
enddo
return lnRet


попробуй:
Код: plaintext
? ch36to10(chr(0x20)+chr(0x20)+chr(0x31)+chr(0x38)+chr(0x4f)+chr(0x20)+chr(0x20)+chr(0x20))
...
Рейтинг: 0 / 0
14.09.2007, 15:59
    #34801482
Из MSSQL поле binary в integer VFP9
Какой еще к черту "числовой текст"? ParentId посмотрел таким способом?
А вот это выдает 180 или 18?
Код: plaintext
?val(chr(0x20)+chr(0x20)+chr(0x31)+chr(0x38)+chr(0x4f)+chr(0x20)+chr(0x20)+chr(0x20))
...
Рейтинг: 0 / 0
14.09.2007, 16:09
    #34801518
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Дает 18. Извини, не числовой, а цифровой текст, тест из цифр. Так быстро, что не могу анализировать, но хотелось бы сегодня решить проблему конвертации.
Dima T, спасибо, поразмыслю над кодом. Пока никаких окончательных выводов не сделал, слишком быстро.
...
Рейтинг: 0 / 0
14.09.2007, 16:11
    #34801527
Из MSSQL поле binary в integer VFP9
Только ли из цифр? Почему 18, а не 180? Еще раз предлагаю посомотреть и ParentId указанным мной способом. Там вообще ни одной цифры нет.
...
Рейтинг: 0 / 0
14.09.2007, 16:15
    #34801537
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
Наконец понял фразу "тип binary сделан для исключения конвертаций содержиого такого поля при неправильных настройках сервера и/или клиента", спасибо. Какие же настройки сервера по этому поводу бывают, и по результату 18-какие у меня? Ситуация, кажется, становится в этой связи опасной для меня!
...
Рейтинг: 0 / 0
14.09.2007, 16:19
    #34801551
AMorkovka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Из MSSQL поле binary в integer VFP9
?val(chr(0x20)+chr(0x20)+chr(0x20)+chr(0x4b)+chr(0x71)+chr(0x20)+chr(0x20)+chr(0x20))
Дает 0, приплыли. Может, настройки сервера выручат, подскажите, как говорят, плиз!
...
Рейтинг: 0 / 0
14.09.2007, 16:19
    #34801552
Из MSSQL поле binary в integer VFP9
Специально для плохо умеющих читать повторяю:

Там хранятся строки. А тип binary сделан для исключения конвертаций содержиого такого поля при неправильных настройках сервера и/или клиента. А для генерации используется 36-ричная система.

Понятно почему я написал
Код: plaintext
select convert(char( [b]8 )[/b], id), convert(char( 8 ), parentid) from #t
а не так подавляюще действующий на некоторых инт?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Из MSSQL поле binary в integer VFP9 / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]