Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

TClientDataSet (TDataset) проапдейтить поле   Найти похожие ветки 

 
AV ©   (2012-02-07 16:17) [0]

подумал, что велосипед поди пишу..

procedure TTxtToCDS.UpdateField(sNameField: string; var vValue: Variant);
var
 BM: TBookmark;
begin
 if FCDS.FindField(sNameField)= nil then
 begin
   if vValue = -1 then
     vValue := -11 else
     vValue := -1;
   Exit;
 end;
 BM := FCDS.GetBookmark;
 FCDS.First;
 while not(FCDS.Eof) do
 begin
   FCDS.Edit;
   FCDS.FieldByName("sNameField").Value := vValue;
   FCDS.Post;
   FCDS.Next;
 end;
 FCDS.GotoBookmark(BM);
 FreeAndNil(BM);
end;

а еще where часть неплохо бы..

(Запросом нельзя! :) , (т.к. из текстовых файлов подгружается, формата наперед неизвестного, к-рый вычисляется по ходу))


 
И. Павел ©   (2012-02-07 16:47) [1]

>   FCDS.Post;
>   FCDS.Next;

Одного достаточно.


 
Ega23 ©   (2012-02-07 16:49) [2]

Ничего не понял, но DisableControls/EnableControls я бы таки включил. :)


 
AV ©   (2012-02-07 17:42) [3]


> Одного достаточно.

хм.. посмотрю.. что-то не уверен


> Ничего не понял, но DisableControls/EnableControls я бы
> таки включил. :)

Включу :)
ну например, есть много разных файлов, формата с разделителем или позиционные, удобнее с ними работать как с таблицей
мой класс делает
FileDS := TTxtToCDS.Create;
формата с разделителем
FileDS.Delimetr := ";";
FileDS.DefineClientDataSetFields("UACCOUNT,ftString,50;UPHONE,ftString,10;user_i d,ftInteger,0");
или
позиционные
FileDS.Delimetr := "";
FileDS.DefineClientDataSetFields("UACCOUNT,ftString,50,0,30;UPHONE,ftString,10;R SLT,ftInteger,0");

 FileDS.LoadFromFile("1.txt");

Получаю таблицу (ClientDataSet) из файла вида
FNs47569;0123456789;-1
FNs47569;0213456789;-1
FNs47569;0132456789;-1
FNs47569;0123566789;-1

в обычном SQL что бы проадейтить поле RSLT надо написать update T set RSLT = 1
А в файле что бы такое сделать, пишу
FileDS := TTxtToCDS.Create;
FileDS.DefineClientDataSetFields("UACCOUNT,ftString,50;UPHONE,ftString,10;user_i d,ftInteger,0");
FileDS.LoadFromFile("1.txt");

арбайтен с UACCOUNT UPHONE
и

FileDS.UpdateField("RSLT", 1);
FileDS.SaveToFile("1-complete.txt");


 
И. Павел ©   (2012-02-08 08:27) [4]

> хм.. посмотрю.. что-то не уверен

Из справки по TDataSet:
Call Next to move to the next record in the dataset, making it the active record. Next posts any changes to the active record



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.06 c
15-1341814491
Очень Злой
2012-07-09 10:14
2013.03.22
Не могу скачать флешплейер


15-1343713763
Артём
2012-07-31 09:49
2013.03.22
MD5 hash


15-1334692803
ДимкаНа
2012-04-18 00:00
2013.03.22
Как называется электромагнитный поршень?


1-1302458898
Polevi
2011-04-10 22:08
2013.03.22
Порядок контролов на ToolBar


3-1277797743
Axe
2010-06-29 11:49
2013.03.22
ошибка поключения Ms Sql