powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Связанные таблицы в Access97 и тип данных nvarchar(500)
20 сообщений из 20, страница 1 из 1
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039520
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает - 97 аксес может воспринимать данные nvarchar?

Пытаюсь, для перевода базы на SQL Server, быстро садаптировать старую аксесную оболочку (временно). Там были поля Memo. Ежели их сделать varchar(500), то в аксессе они видны как Memo, а nvarchar(500) видится как Текстовый длиной 255. Это нам обидно.
Может, можно как-нибудь коленкой нажать?
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039560
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте задать вопрос на www.hiprog.com
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039887
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sFx:
Молчат там, как рыба об лед. Вообще сайт не сильно оживленный.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039895
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я бы не сказал, просто у Вас как у продвинутого специалиста вопросы нестандартные, на которые не всегда сразу можно найти ответ. И потом лето, жара, смог... А вообще там хорошие специалисты по аксесу и СКЛю
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039913
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sFx:
За комплимент насчет "продвинутого специалиста", конечно, спасибо. Я-то себя все в чайниках числю. Скорее все-таки жара.

Придумался такой вариант - переделать все поля nvarchar на varchar, а просле создания новой оболочки на VB сконвертнуть их обратно в nvarchar. Кто что думает насчет "подводных камней" такого решения?
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32039970
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нужно ли все 500 в nvarchar? может стоит ограничить как в аксесе 255, а когда сделаете на VB то вернетесь к размерности 500? или сделайте два поля по 250.функция разбиения достаточно простая. все равно все вводить будут через форму. Просто что бы не думать как там non-unicode и unicode будут преобразовываться.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040024
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, 255 нельзя - в старой базе в полях MEMO максимальный размер специально определяла - ~480 получилось.

Насчет двух полей - не знаю, стоит ли. Если сделать два поля на форме для одного понятия (например Аннотация ) - пользователи испугаются, что куда вводить. А если делать свободное текстовое поле, а при апдейте объединять - предполагаю массу прекосяков.

А какие могут быть проблемы при преобразовании non-unicode в unicode? Вот наоборот если - вижу проблемы для юникодных символов, не попадающих в основной набор латиницы - кириллицы.
Щас экспериментировать буду.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040071
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотите фокус?!!!
Создаете поле типа varchar, делаете связь с Access - получаете в нем поле типа MEMO. Меняете тип поля на nvarchar. Не трогаете связь в Access. Поле, естественно, остается MEMO и все корректно работает.
Похоже на то, что Jet 3.5 не знает такого типа данных nvarchar, но ничего не имеет против его использования под видом обычного varchar.
Единственный недостаток - нельзя после этого заново связывать таблицу если изменится ее структура. Вот если бы можно было тип данных в связанной таблице в аксесе ручками поменять??? Как бы визард обмануть?
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040119
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно я такого интересного открытия не встречал.
Спасибо, Erika! Всё таки я не устаю повторять:
Аксесс - это восьмое чудо света, что бы там снобы не говорили.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040155
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я такой эффект в аксесе видел, но менял байт на tinyint и т.д. и несколько раз после таких замен, аксес переставал открывать такую таблицу. в общем могут быть всякие коллизии...(попробуйте поменять какие нибудь значения в старых полях сначала через СКЛ, потом через аксес.) мне писал: "недопустимый формат данных."
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040197
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда-то специально смотрел, как же выкрутились разработчики в базе Northwind (на СКЛ-сервере). Выкрутились они очень легко: нет ни одного поля (char-varchar) длиннее 255 символов. Даже в таблице Employees для поля PhotoPath поставили nvarchar (255). Кстати, это самое "длинное" поле :-)
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040260
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэкспериментировала с редактированием из Access и из SQL - единственный обнаруженный недостаток - если в SQL вставить в поле например греческие юникодные символы, то аксес аккуратно их отображает как "???".
Я бы не стала на основании этого постоянные решения строить - но, может, пару месяцев продержится???

2 sFx
А что за тип данных байт? Я в SQL не нашла. Может - бит? Или char(1)? Если bit помнять на tinyint и в sql вставить число, отличное от 0 или 1, то аксес действительно перестает воспринимать данные всей таблицы - проверила.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040334
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно bit :)), просто в Аксесе размер ставится как байт, вот и спутал. Кстати если заного привязать таблицу с измененным типом, то все открывается, вот такие глюки. А делал я все это для того, чтобы в аксесе проверка на True в логическом поле работала бы корректно, потому что при использовании Upsize (перенос Аксеса на СКЛ) логический тип аксеса переносится как bit в СКЛ и соответственно происходить приведение -1 в 1, что в аксесе не работает в проверках на равнение True, но зато в СКЛе True=1.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040414
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 sFx:
Не поняла - по моему, bit SQL - это логический Access (0/не 0), а Байт Аксеса - это как раз tinyint SQL (целые от 0 до 255). Видимо, при попытке интерпретировать байт(8 бит) как логическое(1 бит), оно и глючит.

А True это не 1, а "не ноль"
Может, я не о том, но у меня в все приводится без всяких выкрутас с заменами типов логических полей??? В SQL вводится "1" - в Access в логическом поле отображается "-1", и наоборот. Что, в принципе, вполне понятно. Поскольку логическое выражение может быть True(ненулевое) или False(0). И при вводе любого ненулевого числа аксес отображает в этом поле -1 а SQL 1.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040449
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А Access97 априори должен понимать юникод? По-моему, во времена А97 юникода не было. Чего не было, того он и не знает.

А2000 юникод понимает (поле nvarchar переводит в МЕМО).

Если у вас только русские и английские буквы используются, может хватит varchara?
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040460
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BAlex:
acc97 естественно не понимает юникод, а понимает русскую и английскую кодовые страницы.
А юникод мне нужен для новой оболочки, чтобы греческие символы народ мог вставлять в текстовое поле, а не создавать из-за них присоединенный word документ (состоящий, порой, из одного предложения). А 2000 аксес пользователям поставить не могу - машины дохлые. Вот и было принято решение - поисковики на IIS, а ввод данных на VB. Но пока все это будет сотворяться - хочу асс97 со связанными таблицами настроить. Людям же надо с чем - то работать пока.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040521
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Erika: Хм.... проверил на одной таблице, все действительно так как Вы сказали видимо я перегрелся.... а я вспомнил, почему менял bit на smallint. bit нельзя группировать в запросах, поэтому я переделывал его на Smallint, а потом приходилось умножать на *-1, что бы правильно отображать данные. Дело в том, что если я сделаю рекордсет, а потом это логическое поле буду сравнивать с True, То будет проверятся равенство -1, а не <> 0
пример if rst(0)=True then msgbox("a")
так вот если rst(0) это логическое поле (samllint) то оно никогда не удовлетворит условию в VB "=True", если не перемножить значение на -1. Хотя с Вашей помощью я думаю я перепишу все условия на <> 0. Спасибо за совет.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040558
BAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джон Л. Вескес, Майк Гандерлоу, Мэри Чипмен. Access и SQL Server. 1996

стр. 98. Конверсия типов данных из SQL Server в Jet.
char (varchar) -> TEXT при наличии не более 255 символов и MEMO при наличии более 255 символов.

Правда, это для А95 и СКЛ-сервер 6.

Ясно, про Юникод ни слова :-)
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040585
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BAlex:
Да, все правильно. Теперь уже более-менее понятно, откуда у проблемы ноги растут.

2 sFx:
>>bit нельзя группировать в запросах
А по-моему, группировать его можно - вот вычислять нельзя, пока не преобразуешь к какому - нибудь целому. Я попробовала - никаких проблем, если в SQL использовать CAST(flag AS int), а в Аксесе CInt([flag]). Причем, в аксессе не смотря на то, что CInt([flag]) = -1, Sum(CInt([flag])) - положительное число (кол-во "-1"?)
И тогда не надо никаких проблем с умножениями и логическими полями типа tinyint.
...
Рейтинг: 0 / 0
Связанные таблицы в Access97 и тип данных nvarchar(500)
    #32040616
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cint() сработало, Спасибо еще раз....
пойду поучу матчасть :)))
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Связанные таблицы в Access97 и тип данных nvarchar(500)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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