Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / пустые символы в конце на SQL сервере / 4 сообщений из 4, страница 1 из 1
29.06.2004, 14:26
    #32581262
Василий Л
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пустые символы в конце на SQL сервере
Здравствуйте. Подскажите пожалуйста, на SQL сервере есть таблица со строковыми полями. При записи значений через удаленный просмотр в поля этой таблицы после значений куча пустых символов. Как от этого избавиться.

Заранее спасибо.
...
Рейтинг: 0 / 0
29.06.2004, 14:37
    #32581299
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пустые символы в конце на SQL сервере
До VFP9 - никак

Проблема в том, что в более младших версиях FoxPro не было такого типа полей, как VarChar (введены только в VFP9) Это значит, что все поля VarChar из SQL-сервера автоматически конвертировались в тип Character и соответственно дополнялись концевыми пробелами.

Решение есть, но очень неудобное:

1) Отказаться от обновления через Remote View и делать замену напрямую через SQLExec()
2) На SQL-сервере написать триггера на втставку-обновление для отсечения концевых пробелов
3) Отказаться от использования на SQL-сервере полей типа VarChar, если их длина не превышает 255 символов
...
Рейтинг: 0 / 0
30.06.2004, 08:28
    #32582337
Василий Л
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пустые символы в конце на SQL сервере
1. на SQL сурвере поля типа NVARCHAR
2. а как тригер написать, чтобы обновлялась только измененная строка

подскажите пожалуйста
...
Рейтинг: 0 / 0
30.06.2004, 10:58
    #32582676
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
пустые символы в конце на SQL сервере
Василий Л1. на SQL сурвере поля типа NVARCHAR

Это ты зря. FoxPro не поддерживает UNICOD. Что именно он прочитает из таких полей - не знаю. Впрочем, я с такими полями и не работал.

Кроме того, просто нет особого смысла использовать VarChar при длинах полей меньше 255. Это связано с некоторыми особенностями физического хранения полей переменной длины. При таких небольших размерах больше недостатков, чем достоинств. Тут даже нельзя сказать однозначно, что будет выигрыш в физическом размере базы данных.

Василий Л2. а как тригер написать, чтобы обновлялась только измененная строка

Ну, это тебе лучше в конфе по MS SQL спросить. Я такого ни разу не делал. Общее направление: внутри тела триггера существуют 2 специфические таблицы

Inserted - список добавленных (измененных) записей с НОВЫМИ значениями
Deleted - список удаленных (измененных) записей со СТАРЫМИ значениями

Структура этих таблиц совпадает со структурой таблицы для которой и пишется тело триггера

Т.е. где-то так получается:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TRIGGER MyTable_RTrim
ON MyTable
FOR INSERT, UPDATE
AS
UPDATE MyTable
	SET StringField1 = RTRIM(MyTable.StringField1),
		StringField2 = RTRIM(MyTable.StringField2), 
		...
	FROM MyTable
	INNER JOIN inserted ON MyTable.ID = inserted.ID
UPDATE MyTable
SET StringField = RTRIM(StringField)

Можно еще довесить проверку на факт обновление строковых полей (не обновлять, если строковые поля не изменялись). Но тут я не силен. Уточни в конфе по MS SQL
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / пустые символы в конце на SQL сервере / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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