Главная страница
    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.068 c
15-1350631915
AV
2012-10-19 11:31
2013.03.22
MSSQL. Посоветуйте индексы на таблицу


15-1340220153
Дмитрий С
2012-06-20 23:22
2013.03.22
Посоветуйте алгоритм контрольной цифры.


15-1330000715
aka
2012-02-23 16:38
2013.03.22
Тест Эйнштейна при приеме на работу)


15-1339161690
Unk
2012-06-08 17:21
2013.03.22
Почему статьи не дополняются?


15-1330503243
stas
2012-02-29 12:14
2013.03.22
Правильное использование батареи ноутбука





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