powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странная особенность SQL Server 2000. Вопрос на засыпку!
9 сообщений из 9, страница 1 из 1
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036679
SEVENSEALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При помощи Design Table SQL Server Enterprise Manager создана таблица Test с единственным
полем F1 типа Char.
Без проблем выполняется его обновление (Delphi 5):

Table1.Edit; // Table1.TableName=Test
Table1.FieldByName('F1').AsString := s; //s - переменная типа string
Table1.Post;

Далее, если тем же Design Table в таблицу Test просто добавить поле F2 типа bit
(Data Type bit, Length 1, Allow Nulls V), то при попытке обновления F1
при выполнении Table1.Edit выдаётся сообщение:

"Couldn't perform the edit because another user changed the record"

ВОПРОС: ПОЧЕМУ И КАК С ЭТИМ БОРОТЬСЯ?
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036692
Фотография Hermitap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользвоаться компонентом Ttable в работе с SQL серверами это верх несовершенства.
для этого есть TQuery. а TTable оставьте парадоксу или DBF файликам.

Не начинайте сейчас делать неправильно.
TTable это не клиент серверный подход
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036812
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый SEVENSEALS.

Подобная проблема встречалась. Дело было в полях, которые имели значения по умолчанию.
Это что-то там у сервера ум-за-разум заходило и когда я хотел сделать вставку, он сперва вставлял значение по умолчанию и блокировал таблицу на себя.

Вы используете BIT, который ОБЯЗАН иметь значение и наверное, происходит что-то сходное.

На мой взгляд, все выглядит именно так. Но не уверен.

Согласен с Hermitap, что TTAble надо отправить в отставку.
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036844
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятно, почему Вы уперлись в SQL Server
А нельзя ли сначала посмотреть настройки BDE, TDataBase, TTable в них "поковыряться"
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036889
SEVENSEALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Cat2.
Нечто подобное мы предположили и попытались выйти из положения так.
При добавлении в таблицы полей типа bit запретили Allow Nulls, а Default присвоили 0.
Указанная в вопросе странность в программах перестала проявляться. Но осталась другая
странность: при добавлении записи с помощью TDBGrid в сетке появляется дубль добавленной
записи, хотя физически в таблице эта вторая запись отсутствует и исчезает из сетки после
Refresh.
Ещё можно добавить, что если вместо полей типа bit использовать в качестве булевских
поля типа sql_variant, то вышеуказанные проблемы снимаются.

Что касается отставки TTable и использования TQuery, то это указанные проблемы не
решает, мы пробовали (если конечно не пользоваться исключительно SQL-запросами).
Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п.
А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с
TTable или с TQuery.
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036892
SEVENSEALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Cat2.
Нечто подобное мы предположили и попытались выйти из положения так.
При добавлении в таблицы полей типа bit запретили Allow Nulls, а Default присвоили 0.
Указанная в вопросе странность в программах перестала проявляться. Но осталась другая
странность: при добавлении записи с помощью TDBGrid в сетке появляется дубль добавленной
записи, хотя физически в таблице эта вторая запись отсутствует и исчезает из сетки после
Refresh.
Ещё можно добавить, что если вместо полей типа bit использовать в качестве булевских
поля типа sql_variant, то вышеуказанные проблемы снимаются.

Что касается отставки TTable и использования TQuery, то это указанные проблемы не
решает, мы пробовали (если конечно не пользоваться исключительно SQL-запросами).
Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п.
А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с
TTable или с TQuery.
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036907
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> мы пробовали (если конечно не пользоваться исключительно SQL-запросами).
а это как? :) Вроде бы SQL сервер для того и существует, чтобы пользоваться исключительно SQL-запросами
>> Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п.
А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с
TTable или с TQuery.


А как еще, кроме TDBEdit?

И чем ходите к серверу? Наверное, даже точно, BDE. Поэтому и дубли возникают.
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32036942
SEVENSEALS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Tygra.

Delphi позволяет с использованием TQuery обновить поле в таблице с помощью, например,
Query1.SQL.Add('Update test set ... и т.д. Можно обновить поле с помощью TDBEdit или
TDBComboBox и пр. Можно также использовать, например, FieldByName('имя_поля').As... := 'новое_значение'.
Ну и т.д.

Вот последнее Ваше замечание любопытно. Почему все же при пользовании BDE возникает дубль записи?
...
Рейтинг: 0 / 0
Странная особенность SQL Server 2000. Вопрос на засыпку!
    #32037034
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Tygra, что надо обходится запросами.

Я не являюсь специалистом по решению проблем. Обычно мой методы предполагают их снятие.

При "ручной" вставке записи (обычно это нужно в справочниках) я стараюсь применять такой метод.
В однозаписевой форме формируется минимально необходимая для идентификации записи информация.
Вся прочая информация вставляется через изменение, когда ключевые поля уже определены.

Не использую для вставки полей сетки. Это прекрасно работало в Paradox, но SQL время от времени дает всякие непонятные сбои, которые я не анализирую, а просто отказываюсь от сомнительных, по крайней мере для меня, методов.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Странная особенность SQL Server 2000. Вопрос на засыпку!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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