Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.069 c
6-1264750451
Pavel
2010-01-29 10:34
2013.03.22
Многопоточность в Indy


15-1337159093
Дмитрий С
2012-05-16 13:04
2013.03.22
Загрузить одним махом несколько динамических массивов.


2-1327748818
upc
2012-01-28 15:06
2013.03.22
Разрешить ввод в Edit только числовые значения с плавающей точкой


15-1349037002
Юрий
2012-10-01 00:30
2013.03.22
С днем рождения ! 1 октября 2012 понедельник


15-1332880203
Юрий
2012-03-28 00:30
2013.03.22
С днем рождения ! 28 марта 2012 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский