Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Работаю так: AdoConnection AdoDataSet Provider ClientDataSet + EhLib DBEditEh DBGridEh и т.д. Косяк в чем: На MSSQL 2000 есть таблица, там поле типа строка длиной там 25 символов. Так вот, компоненты доступа к данным и отображают эти 25 символов, даже если в таблице записана строка длиной в 8 (там вылезают пробелы). Че делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 12:47 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Поменять тип данных поля таблицы с char(25) на varchar(25) + обрезать правые пробелы с помошью RTRIM(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 12:49 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
То есть цикл, который перебирает весь датасет и обрезает пробелы? А если там 25000 строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 13:16 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Причем тут цикл и датасеты?! Я правильно предположил, что поле в базе у вас char(25)? Меняйте тип поля на varchar(25), чтоб сиквел не дописывал пробелы в конец: Код: plaintext Затем отсеките имеющиеся уже пробелы: Код: plaintext 1. 2. 3. С серверной частью все. Теперь в клиентской, если были созданы статические поля в FieldsEditor, то меняем у этого поля свойство FixedChar на False. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2003, 13:44 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
C этим разобрался - спасибо! Но появился след вопрос: Появляется ошибка: Приложение не может явнм образом закрыть объект Connection в середине транзакции. Это происходит при вызове удаленной процедуры. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 07:08 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
авторЭто происходит при вызове удаленной процедуры. Как быть? А кто открывает транзакцию? кусок кода можно увидеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 08:07 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
procedure TFClients.providerBeforeUpdateRecord(Sender: TObject; SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind; var Applied: Boolean); begin case UpdateKind of ukModify: begin with dm do begin sp_clients_update.Parameters.ParamByName('@bank').Value :=DeltaDS.FieldByName('Áàíê').NewValue; sp_clients_update.Parameters.ParamByName('@naim').Value :=DeltaDS.FieldByName('Íàèìåíîâàíèå').NewValue; sp_clients_update.Parameters.ParamByName('@adress').Value :=DeltaDS.FieldByName('Àäðåñ').NewValue; sp_clients_update.Parameters.ParamByName('@tel').Value :=DeltaDS.FieldByName('Òåëåôîí').NewValue; sp_clients_update.Parameters.ParamByName('@schet').Value:=DeltaDS.FieldByName('Ñ÷åò').NewValue; sp_clients_update.Parameters.ParamByName('@OKPO').Value :=DeltaDS.FieldByName('ÎÊÏÎ').NewValue; sp_clients_update.ExecProc; end; end; ukDelete: begin with dm do begin sp_clients_delete.Parameters.ParamByName('@bik').Value:=DeltaDS.FieldByName('ÁÈÊ').OldValue;; sp_clients_delete.ExecProc; end; end; ukInsert: begin with dm do begin // sp_clients_insert.Parameters.ParamByName('@id').Value:=''; sp_clients_insert.Close; sp_clients_insert.Parameters.ParamByName('@naim').Value :=DeltaDS.FieldByName('Íàèìåíîâàíèå').NewValue; sp_clients_insert.Parameters.ParamByName('@adress').Value :=DeltaDS.FieldByName('Àäðåñ').NewValue; sp_clients_insert.Parameters.ParamByName('@tel').Value :=DeltaDS.FieldByName('Òåëåôîí').NewValue; sp_clients_insert.Parameters.ParamByName('@leader').Value :=DeltaDS.FieldByName('Ðóêîâîäèòåëü').NewValue; sp_clients_insert.Parameters.ParamByName('@datareg').Value :=DeltaDS.FieldByName('Äàòà ðåãèñòðàöèè').NewValue; sp_clients_insert.Parameters.ParamByName('@bank').Value :=DeltaDS.FieldByName('Áàíê').NewValue; sp_clients_insert.Parameters.ParamByName('@schet').Value :=DeltaDS.FieldByName('Ñ÷åò').NewValue; sp_clients_insert.Parameters.ParamByName('@okpo').Value :=DeltaDS.FieldByName('ÎÊÏÎ').NewValue; sp_clients_insert.Parameters.ParamByName('@kpp').Value :=DeltaDS.FieldByName('ÊÏÏ').NewValue; sp_clients_insert.ExecProc; // sp_clients_insert.Close; end; end; end; Applied := True; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:16 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Что-то я не вижу, где ты пытаешься закрыть Connection, а вот не нужные sp_clients_insert.Close есть. Обычно транзакцию начинают перед вызовом метода ApplayUpdates. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:19 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Так у меня ApplyUpdates получается генерирует событие для провайдера, обработчик которого и запускает процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:21 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Ну дык понятно. В какой момент то коннекшен закрывается? прям в обработчике BeforeUpdateRecord?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 09:27 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Все! Я понял. Просто таблицы криво открывал...:) Ну и наверно последний вопрос. У меня после изменения в ClientDataSete не обновляются данные в контролах. Я написал так: procedure TFClients.cds_clientsAfterPost(DataSet: TDataSet); begin cds_clients.ApplyUpdates(-1); cds_Clients.Close; cds_Clients.Open; end; Но мне кажется, есть другой путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:20 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Про какие данные ты ведешь речь? Эти данные не пользователь в контролы вводит? Или они в базе генеряться? Если последнее, то без переоткрытия не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 10:30 |
|
||
|
Поле фиксированной длины?
|
|||
|---|---|---|---|
|
#18+
Данные, которые пользователь вводит в ClientDataSet, которые потом типа должны синхронизироваться с таблицами sql, но я этого не делаю и обращаюсь к серверу с помощью процедур. ClientDataSet мне нужен лишь для того, чтобы определять какое действие выполнил пользователь и в соответствии с этим вызывать процедуру. Так вот. Делаю ClientDataset1.Append, пользователь вводит данные, потом post. И ни хрена эти данные не отобращаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2003, 14:17 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32346395&tid=2115534]: |
0ms |
get settings: |
4ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 341ms |

| 0 / 0 |
