|
|
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
При помощи 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" ВОПРОС: ПОЧЕМУ И КАК С ЭТИМ БОРОТЬСЯ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2002, 11:54:56 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Пользвоаться компонентом Ttable в работе с SQL серверами это верх несовершенства. для этого есть TQuery. а TTable оставьте парадоксу или DBF файликам. Не начинайте сейчас делать неправильно. TTable это не клиент серверный подход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2002, 12:24:58 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Уважаемый SEVENSEALS. Подобная проблема встречалась. Дело было в полях, которые имели значения по умолчанию. Это что-то там у сервера ум-за-разум заходило и когда я хотел сделать вставку, он сперва вставлял значение по умолчанию и блокировал таблицу на себя. Вы используете BIT, который ОБЯЗАН иметь значение и наверное, происходит что-то сходное. На мой взгляд, все выглядит именно так. Но не уверен. Согласен с Hermitap, что TTAble надо отправить в отставку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2002, 20:42:40 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Не понятно, почему Вы уперлись в SQL Server А нельзя ли сначала посмотреть настройки BDE, TDataBase, TTable в них "поковыряться" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 09:46:30 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Спасибо Cat2. Нечто подобное мы предположили и попытались выйти из положения так. При добавлении в таблицы полей типа bit запретили Allow Nulls, а Default присвоили 0. Указанная в вопросе странность в программах перестала проявляться. Но осталась другая странность: при добавлении записи с помощью TDBGrid в сетке появляется дубль добавленной записи, хотя физически в таблице эта вторая запись отсутствует и исчезает из сетки после Refresh. Ещё можно добавить, что если вместо полей типа bit использовать в качестве булевских поля типа sql_variant, то вышеуказанные проблемы снимаются. Что касается отставки TTable и использования TQuery, то это указанные проблемы не решает, мы пробовали (если конечно не пользоваться исключительно SQL-запросами). Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п. А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с TTable или с TQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 12:24:05 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Спасибо Cat2. Нечто подобное мы предположили и попытались выйти из положения так. При добавлении в таблицы полей типа bit запретили Allow Nulls, а Default присвоили 0. Указанная в вопросе странность в программах перестала проявляться. Но осталась другая странность: при добавлении записи с помощью TDBGrid в сетке появляется дубль добавленной записи, хотя физически в таблице эта вторая запись отсутствует и исчезает из сетки после Refresh. Ещё можно добавить, что если вместо полей типа bit использовать в качестве булевских поля типа sql_variant, то вышеуказанные проблемы снимаются. Что касается отставки TTable и использования TQuery, то это указанные проблемы не решает, мы пробовали (если конечно не пользоваться исключительно SQL-запросами). Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п. А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с TTable или с TQuery. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 12:26:22 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
>> мы пробовали (если конечно не пользоваться исключительно SQL-запросами). а это как? :) Вроде бы SQL сервер для того и существует, чтобы пользоваться исключительно SQL-запросами >> Для наших софтов актульны конструкции, использующие для обновления полей TDBEdit и т.п. А в этом случае указанные нами проблемы возникают независимо от того, связан TDBEdit с TTable или с TQuery. А как еще, кроме TDBEdit? И чем ходите к серверу? Наверное, даже точно, BDE. Поэтому и дубли возникают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 13:04:18 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Спасибо Tygra. Delphi позволяет с использованием TQuery обновить поле в таблице с помощью, например, Query1.SQL.Add('Update test set ... и т.д. Можно обновить поле с помощью TDBEdit или TDBComboBox и пр. Можно также использовать, например, FieldByName('имя_поля').As... := 'новое_значение'. Ну и т.д. Вот последнее Ваше замечание любопытно. Почему все же при пользовании BDE возникает дубль записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 14:16:33 |
|
||
|
Странная особенность SQL Server 2000. Вопрос на засыпку!
|
|||
|---|---|---|---|
|
#18+
Согласен с Tygra, что надо обходится запросами. Я не являюсь специалистом по решению проблем. Обычно мой методы предполагают их снятие. При "ручной" вставке записи (обычно это нужно в справочниках) я стараюсь применять такой метод. В однозаписевой форме формируется минимально необходимая для идентификации записи информация. Вся прочая информация вставляется через изменение, когда ключевые поля уже определены. Не использую для вставки полей сетки. Это прекрасно работало в Paradox, но SQL время от времени дает всякие непонятные сбои, которые я не анализирую, а просто отказываюсь от сомнительных, по крайней мере для меня, методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2002, 20:03:07 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32036892&tid=1821770]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 348ms |

| 0 / 0 |
