Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.068 c