|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Кто знает - 97 аксес может воспринимать данные nvarchar? Пытаюсь, для перевода базы на SQL Server, быстро садаптировать старую аксесную оболочку (временно). Там были поля Memo. Ежели их сделать varchar(500), то в аксессе они видны как Memo, а nvarchar(500) видится как Текстовый длиной 255. Это нам обидно. Может, можно как-нибудь коленкой нажать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2002, 20:23 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Попробуйте задать вопрос на www.hiprog.com ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2002, 09:58 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
2 sFx: Молчат там, как рыба об лед. Вообще сайт не сильно оживленный. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 11:58 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Да я бы не сказал, просто у Вас как у продвинутого специалиста вопросы нестандартные, на которые не всегда сразу можно найти ответ. И потом лето, жара, смог... А вообще там хорошие специалисты по аксесу и СКЛю ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 12:11 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
2 sFx: За комплимент насчет "продвинутого специалиста", конечно, спасибо. Я-то себя все в чайниках числю. Скорее все-таки жара. Придумался такой вариант - переделать все поля nvarchar на varchar, а просле создания новой оболочки на VB сконвертнуть их обратно в nvarchar. Кто что думает насчет "подводных камней" такого решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 12:39 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
А нужно ли все 500 в nvarchar? может стоит ограничить как в аксесе 255, а когда сделаете на VB то вернетесь к размерности 500? или сделайте два поля по 250.функция разбиения достаточно простая. все равно все вводить будут через форму. Просто что бы не думать как там non-unicode и unicode будут преобразовываться. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 14:03 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Не, 255 нельзя - в старой базе в полях MEMO максимальный размер специально определяла - ~480 получилось. Насчет двух полей - не знаю, стоит ли. Если сделать два поля на форме для одного понятия (например Аннотация ) - пользователи испугаются, что куда вводить. А если делать свободное текстовое поле, а при апдейте объединять - предполагаю массу прекосяков. А какие могут быть проблемы при преобразовании non-unicode в unicode? Вот наоборот если - вижу проблемы для юникодных символов, не попадающих в основной набор латиницы - кириллицы. Щас экспериментировать буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 15:22 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Хотите фокус?!!! Создаете поле типа varchar, делаете связь с Access - получаете в нем поле типа MEMO. Меняете тип поля на nvarchar. Не трогаете связь в Access. Поле, естественно, остается MEMO и все корректно работает. Похоже на то, что Jet 3.5 не знает такого типа данных nvarchar, но ничего не имеет против его использования под видом обычного varchar. Единственный недостаток - нельзя после этого заново связывать таблицу если изменится ее структура. Вот если бы можно было тип данных в связанной таблице в аксесе ручками поменять??? Как бы визард обмануть? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 17:33 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Давно я такого интересного открытия не встречал. Спасибо, Erika! Всё таки я не устаю повторять: Аксесс - это восьмое чудо света, что бы там снобы не говорили. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2002, 22:45 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Да я такой эффект в аксесе видел, но менял байт на tinyint и т.д. и несколько раз после таких замен, аксес переставал открывать такую таблицу. в общем могут быть всякие коллизии...(попробуйте поменять какие нибудь значения в старых полях сначала через СКЛ, потом через аксес.) мне писал: "недопустимый формат данных." ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 09:45 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Когда-то специально смотрел, как же выкрутились разработчики в базе Northwind (на СКЛ-сервере). Выкрутились они очень легко: нет ни одного поля (char-varchar) длиннее 255 символов. Даже в таблице Employees для поля PhotoPath поставили nvarchar (255). Кстати, это самое "длинное" поле :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 11:41 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Поэкспериментировала с редактированием из Access и из SQL - единственный обнаруженный недостаток - если в SQL вставить в поле например греческие юникодные символы, то аксес аккуратно их отображает как "???". Я бы не стала на основании этого постоянные решения строить - но, может, пару месяцев продержится??? 2 sFx А что за тип данных байт? Я в SQL не нашла. Может - бит? Или char(1)? Если bit помнять на tinyint и в sql вставить число, отличное от 0 или 1, то аксес действительно перестает воспринимать данные всей таблицы - проверила. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 13:20 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
конечно bit :)), просто в Аксесе размер ставится как байт, вот и спутал. Кстати если заного привязать таблицу с измененным типом, то все открывается, вот такие глюки. А делал я все это для того, чтобы в аксесе проверка на True в логическом поле работала бы корректно, потому что при использовании Upsize (перенос Аксеса на СКЛ) логический тип аксеса переносится как bit в СКЛ и соответственно происходить приведение -1 в 1, что в аксесе не работает в проверках на равнение True, но зато в СКЛе True=1. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 16:03 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 18:01 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
А Access97 априори должен понимать юникод? По-моему, во времена А97 юникода не было. Чего не было, того он и не знает. А2000 юникод понимает (поле nvarchar переводит в МЕМО). Если у вас только русские и английские буквы используются, может хватит varchara? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 18:48 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
BAlex: acc97 естественно не понимает юникод, а понимает русскую и английскую кодовые страницы. А юникод мне нужен для новой оболочки, чтобы греческие символы народ мог вставлять в текстовое поле, а не создавать из-за них присоединенный word документ (состоящий, порой, из одного предложения). А 2000 аксес пользователям поставить не могу - машины дохлые. Вот и было принято решение - поисковики на IIS, а ввод данных на VB. Но пока все это будет сотворяться - хочу асс97 со связанными таблицами настроить. Людям же надо с чем - то работать пока. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2002, 19:07 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
2Erika: Хм.... проверил на одной таблице, все действительно так как Вы сказали видимо я перегрелся.... а я вспомнил, почему менял bit на smallint. bit нельзя группировать в запросах, поэтому я переделывал его на Smallint, а потом приходилось умножать на *-1, что бы правильно отображать данные. Дело в том, что если я сделаю рекордсет, а потом это логическое поле буду сравнивать с True, То будет проверятся равенство -1, а не <> 0 пример if rst(0)=True then msgbox("a") так вот если rst(0) это логическое поле (samllint) то оно никогда не удовлетворит условию в VB "=True", если не перемножить значение на -1. Хотя с Вашей помощью я думаю я перепишу все условия на <> 0. Спасибо за совет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2002, 10:11 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
Джон Л. Вескес, Майк Гандерлоу, Мэри Чипмен. Access и SQL Server. 1996 стр. 98. Конверсия типов данных из SQL Server в Jet. char (varchar) -> TEXT при наличии не более 255 символов и MEMO при наличии более 255 символов. Правда, это для А95 и СКЛ-сервер 6. Ясно, про Юникод ни слова :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2002, 11:31 |
|
Связанные таблицы в Access97 и тип данных nvarchar(500)
|
|||
---|---|---|---|
#18+
2 BAlex: Да, все правильно. Теперь уже более-менее понятно, откуда у проблемы ноги растут. 2 sFx: >>bit нельзя группировать в запросах А по-моему, группировать его можно - вот вычислять нельзя, пока не преобразуешь к какому - нибудь целому. Я попробовала - никаких проблем, если в SQL использовать CAST(flag AS int), а в Аксесе CInt([flag]). Причем, в аксессе не смотря на то, что CInt([flag]) = -1, Sum(CInt([flag])) - положительное число (кол-во "-1"?) И тогда не надо никаких проблем с умножениями и логическими полями типа tinyint. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2002, 12:58 |
|
|
start [/forum/topic.php?fid=45&msg=32040024&tid=1683454]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 396ms |
0 / 0 |