Главная страница
    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
2-1329889858
теркин
2012-02-22 09:50
2013.03.22
Как отчистить StringGrid от записей


2-1341236271
>|<
2012-07-02 17:37
2013.03.22
Повторная загрузка изображения на форму, которая в DLL


15-1332451802
Юрий
2012-03-23 01:30
2013.03.22
С днем рождения ! 21 марта 2012 среда


2-1336066310
igorium
2012-05-03 21:31
2013.03.22
Не отображаются русские буквы в английских Виндовс


15-1345750821
Прогер
2012-08-23 23:40
2013.03.22
TDWordRec откуда такое окончание?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский