Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
копирование текущей записи из TDataSet в TClientDataSet
|
|||
|---|---|---|---|
|
#18+
есть TADOQuery, выбирающий множество записей из базы (select id,field1 from Table1 where field1 like '%asd%'), к нему прицеплена гридина когда в гридине выбираем любую запись, она (запись) должна скопироваться в TClientDataSet (стирая там старую) может кто подскажет реализацию? поскольку например вариант привязать ClientDataSet к Query и через провайдер и через MasterSource не удается по причине ошибки "циклическая ссылка" а попытка указать в качестве MasterSource еще один ClientDataSet, привязанный к тому же Query выдает нераспознанную ошибку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2003, 14:56 |
|
||
|
копирование текущей записи из TDataSet в TClientDataSet
|
|||
|---|---|---|---|
|
#18+
Есть несколько вариантов: 1. На форме уже существует ClientDataSet и его поля совпадают с TAdoQuery. 1.1 procedure TForm1.FormCreate( ... ) begin ... ClientDataSet.CreateDataSet; ... end; 1.2 procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet); begin ClientDataSet.EmptyDataSet; ClientDataSet.AppendRecord( [ ... ] ); end; 2. На форме уже существует ClientDataSet и у него нет полей, а в TAdoQuaery есть. 2.1 procedure TForm1.FormCreate( ... ) begin ... ClientDataSet.CreateDataSet; ClientDataSet.Data := Null; ClientDataSet.FieldDefs.BeginUpdate; ClientDataSet.FieldDefs := ADOQuery1.FieldDefs ClientDataSet.FieldDefs.EndUpdate; ... end; 2.2 procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet); begin ClientDataSet.EmptyDataSet; ClientDataSet.AppendRecord( [ ... ] ); end; 3. На форме нет ClientDataSet. 3.1 implementation {$R *.DFM} var CDS: TClientDataSet; 3.2 procedure TForm1.FormCreate( ... ) begin ... CDS := TClientDataSet.Create( nil ); ClientDataSet.Data := Null; ClientDataSet.FieldDefs.BeginUpdate; ClientDataSet.FieldDefs := ADOQuery1.FieldDefs ClientDataSet.FieldDefs.EndUpdate; ... end; 3.3 procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet); begin ClientDataSet.EmptyDataSet; ClientDataSet.AppendRecord( [ ... ] ); end; 3.4 procedure TForm1.FormClose( ... ) begin CDS.Free; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2003, 16:35 |
|
||
|
копирование текущей записи из TDataSet в TClientDataSet
|
|||
|---|---|---|---|
|
#18+
спасибо! :) вот только не хочется в AppendRecord перечислять все два десятка полей ADOQuery у меня сработал такой вариант: ADOQuey1 и ClientDataSet1 связаны через Provider Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. единственный недостаток при ClientDataSet1->Filtered = false; на короткое время снимается фильтрация и становятся доступными все записи метода принудительного вызова фильтрации не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2003, 17:28 |
|
||
|
копирование текущей записи из TDataSet в TClientDataSet
|
|||
|---|---|---|---|
|
#18+
единственный недостаток при ClientDataSet1->Filtered = false; на короткое время снимается фильтрация и становятся доступными все записи метода принудительного вызова фильтрации не нашел ClientDataSet1->DisableControls(); ClientDataSet1->Filtered = false; ClientDataSet1->Filtered = true; ClientDataSet1->EnableControls(); И записи мелькать не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 14:31 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2117504]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
129ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 485ms |

| 0 / 0 |
