Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.02.2016, 14:57
maaxa maaxa вне форума
Прохожий
 
Регистрация: 19.02.2016
Сообщения: 1
Версия Delphi: Delphi xe8
Репутация: 10
По умолчанию Запись результата в БД

Добрый день.
Задача стоит такая выгрузить полиса из базы данных, отправить их на сайт программным путем, далее спарсить полученные результаты и записать в базу данных.
Это надо для того что бы определять у кого из людей полис активный, а у кого нет.
Подключаюсь к БД Oracle с помощью ADOQuery получаю результат:
id, ФИО, Дата рождения, номер полиса. (очень много строк)
Все это дело отображается в DBGrid.
Далее я сделал так:

Код:
procedure TForm2.DBGrid1CellClick(Column: TColumn);
var
http: TidHttp;
html, cookie,a,b,c,d,e,f,g: string;
resp : integer;
data: tstringlist;
begin
Memo2.Text:=' ';
Memo1.Text:=' ';
dbedit3.Text:=' ';

aDOQuery2.Active:=False;
ADOQuery2.Parameters.ParamByName('pac').Value:= dbedit1.Text;
ADOQuery2.Active:=True;

aDOQuery3.Active:=False;
ADOQuery3.Active:=True;

HTTP:=TidHttp.Create;
data:=TStringList.Create;
data.Add('MSOTlPn_View=0');
data.Add('MSOTlPn_ShowSettings=False');
data.Add('MSOTlPn_Button=none');
data.Add('__REQUESTDIGEST=0xBA63B4DE498B6F01E67D445BE39384271817C550269DC6B6D6C6577355A406A9C7FD0B4E027FBC7500EDAE36E2A08D994FEE59A837FCCE2B4739FFDD14656F38,'+DBEdit3.Text);      //12 Jan 2016 11:15:28 -0000
data.Add('MSOSPWebPartManager_DisplayModeName=Browse');
data.Add('MSOSPWebPartManager_ExitingDesignMode=false');
data.Add('MSOSPWebPartManager_OldDisplayModeName=Browse');
data.Add('MSOSPWebPartManager_StartWebPartEditingName=false');
data.Add('MSOSPWebPartManager_EndWebPartEditing=false');
data.Add('_maintainWorkspaceScrollPosition=0');
data.Add('__VIEWSTATE=/wEPDwUBMA9kFgJmD2QWAgIBD2QWAgIDD2QWCgIDD2QWAgUmZ184Yzg2Y2VkNV82NTY5XzRmOWRfYWVhZl9jZDlkNjlhZmMzN2'+
'EPZBYEZg8WAh4HVmlzaWJsZWhkAgEPFgIfAGhkAhEPZBYEZg9kFgQCAQ9kFgJmD2QWBAICD2QWFAIBDxYCHwBoZAIDDxYIHhNDbGllbnRPbkNs'+
'aWNrU2NyaXB0BW9qYXZhU2NyaXB0OkNvcmVJbnZva2UoJ1Rha2VPZmZsaW5lVG9DbGllbnRSZWFsJywxLCAxLCAnaHR0cHM6XHUwMDJmXHUwMDJm'+
'YXJob2ZvbXMucnVcdTAwMmZvbXMnLCAtMSwgLTEsICcnLCAnJykeGENsaWVudE9uQ2xpY2tOYXZpZ2F0ZVVybGQeKENsaWVudE9uQ2xpY2tTY3Jpc'+
'HRDb250YWluaW5nUHJlZml4ZWRVcmxkHgxIaWRkZW5TY3JpcHQFIVRha2VPZmZsaW5lRGlzYWJsZWQoMSwgMSwgLTEsIC0xKWQCBQ8WAh8AaGQCBw'+
'8WAh8AaGQCCQ8WAh8AaGQCCw8WAh8AaGQCDw8WAh8AaGQCEQ8WAh8AaGQCEw8WAh8AaGQCFQ8WAh8AaGQCAw8PFgoeCUFjY2Vzc0tleQUBLx4PQXJy'+
'b3dJbWFnZVdpZHRoAgUeEEFycm93SW1hZ2VIZWlnaHQCAx4RQXJyb3dJbWFnZU9mZnNldFhmHhFBcnJvd0ltYWdlT2Zmc2V0WQLrA2RkAgMPZBYCAgE'+
'PZBYCAgMPZBYCAgEPPCsABQEADxYCHg9TaXRlTWFwUHJvdmlkZXIFEVNQU2l0ZU1hcFByb3ZpZGVyZGQCAQ9kFgYCBQ9kFgICAQ8QFgIfAGhkFCsBAGQC'+
'Bw9kFgJmD2QWAmYPFCsAA2RkZGQCCQ8PFgQeBFRleHQFS9CX0LDQv9GD0YHQuiDQv9Cw0L3QtdC70Lgg0LzQvtC90LjRgtC+0YDQuNC90LPQsCDRgNCw0L'+
'fRgNCw0LHQvtGC0YfQuNC60L7Qsh8AaGRkAhcPZBYCAgEPZBYCZg9kFgICAQ8PZBYGHgVjbGFzcwUibXMtc2J0YWJsZSBtcy1zYnRhYmxlLWV4IHM0LXNlYXJjaB'+
'4LY2VsbHBhZGRpbmcFATAeC2NlbGxzcGFjaW5nBQEwZAIpD2QWAgIJD2QWAgIBDw8WAh8AaGQWAgIDD2QWAmYPZBYCAgMPZBYCAgUPDxYEHgZIZWlnaHQbAAAAAAAAeUABAAAA'+
'HgRfIVNCAoABZBYCAgEPPCsACQEADxYEHg1QYXRoU2VwYXJhdG9yBAgeDU5ldmVyRXhwYW5kZWRnZGQCPQ9kFgICAg9kFgQCBQ8PFhIeC0Rlc2NyaXB0aW9uZR4JRGlyZWN0aW9uC'+
'yoqU3lzdGVtLldlYi5VSS5XZWJDb250cm9scy5Db250ZW50RGlyZWN0aW9uAB4FVGl0bGUFC1JSWlNlYXJjaFNOHgpDaHJvbWVUeXBlAgIfEAKAgwgeBVdpZHRoHB4QRmlsdGVyT3Bl'+
'cmF0aW9uczKNBQABAAAA/////wEAAAAAAAAABAEAAACTAlN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkRpY3Rpb25hcnlgMltbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZlcnN'+
'pb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XSxbTWljcm9zb2Z0LlNoYXJlUG9pbnQuV2ViUGFydFBhZ2VzLkZpbHRlck9w'+
'ZXJhdGlvbiwgTWljcm9zb2Z0LlNoYXJlUG9pbnQsIFZlcnNpb249MTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49NzFlOWJjZTExMWU5NDI5Y11dAwAAAAdWZXJ'+
'zaW9uCENvbXBhcmVyCEhhc2hTaXplAAMACJIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuR2VuZXJpY0VxdWFsaXR5Q29tcGFyZXJgMVtbU3lzdGVtLlN0cmluZywgbXNjb3JsaWIsIFZl'+
'cnNpb249Mi4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0IAAAAAAkCAAAAAAAAAAQCAAAAkgFTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZ'+
'XJpYy5HZW5lcmljRXF1YWxpdHlDb21wYXJlcmAxW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj0yLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E'+
'1YzU2MTkzNGUwODldXQAAAAALHw8cHgtQYXJhbVZhbHVlczK9BAABAAAA/////wEAAAAAAAAADAIAAABYTWljcm9zb2Z0LlNoYXJlUG9pbnQsIFZlcnNpb249MTQuMC4wLjAsIEN1bHR1cmU9bm'+
'V1dHJhbCwgUHVibGljS2V5VG9rZW49NzFlOWJjZTExMWU5NDI5YwUBAAAAPU1pY3Jvc29mdC5TaGFyZVBvaW50LldlYlBhcnRQYWdlcy5QYXJhbWV0ZXJOYW1lVmFsdWVIYXNodGFibGUBAAAAB'+
'V9jb2xsAxxTeXN0ZW0uQ29sbGVjdGlvbnMuSGFzaHRhYmxlAgAAAAkDAAAABAMAAAAcU3lzdGVtLkNvbGxlY3Rpb25zLkhhc2h0YWJsZQcAAAAKTG9hZEZhY3RvcgdWZXJzaW9uCENvbXBhcmVyE'+
'Ehhc2hDb2RlUHJvdmlkZXIISGFzaFNpemUES2V5cwZWYWx1ZXMAAAMDAAUFCwgcU3lzdGVtLkNvbGxlY3Rpb25zLklDb21wYXJlciRTeXN0ZW0uQ29sbGVjdGlvbnMuSUhhc2hDb2RlUHJvdmlkZX'+
'II7FE4PxoAAAAKCgsAAAAJBAAAAAkFAAAAEAQAAAAEAAAABgYAAAAGVXNlcklEBgcAAAACU04GCAAAAApGaWx0ZXJMaW5rBgkAAAAFVG9kYXkQBQAAAAQAAAAGCgAAAA9DdXJyZW50VXNlck5hbWU'+
'GCwAAABAyOTkzNDg5NzIwMDAwMDQxBgwAAAABPwYNAAAAFDIwMTYtMDEtMTJUMTQ6MTU6MjhaC2QWAmYPD2QPEBYBZhYBFgIeDlBhcmFtZXRlclZhbHVlBRAyOTkzNDg5NzIwMDAwMDQxDxYBAgcWA'+
'QWNAU1pY3Jvc29mdC5TaGFyZVBvaW50LldlYlBhcnRQYWdlcy5EYXRhRm9ybVBhcmFtZXRlciwgTWljcm9zb2Z0LlNoYXJlUG9pbnQsIFZlcnNpb249MTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUH'+
'VibGljS2V5VG9rZW49NzFlOWJjZTExMWU5NDI5Y2RkAgcPZBYEZg8WAh8AaGQCAQ8WAh8AaGQYAgUrY3RsMDAkUGxhY2VIb2xkZXJMZWZ0TmF2QmFyJFF1aWNrTGF1bmNoTWVudQ8PZAVg0KDQtdCz0LjR'+
'gdGC0YAg0LfQsNGB0YLRgNCw0YXQvtCy0LDQvdC90YvRhVzQn9C+0LjRgdC6INC/0L4g0YHQtdGA0LjQuC/QvdC+0LzQtdGA0YMg0L/QvtC70LjRgdCwZAVFY3RsMDAkUGxhY2VIb2xkZXJUb3BOYXZCYX'+
'IkUGxhY2VIb2xkZXJIb3Jpem9udGFsTmF2JFRvcE5hdmlnYXRpb25NZW51Dw9kBQ7Qk9C70LDQstC90LDRj2QeTrzW7msSghg8mvvoonwo+bo8oQ==');
data.Add('__VIEWSTATEGENERATOR=AB769156');
data.Add('__EVENTVALIDATION=/wEWBgKoxcuMCwKpn5bCCwKjkeOEBgLNrvW5AwKdgfPdCwKG4J4hcLR60ArTyb515wq2WYP4RSfp7L8=');
data.Add('ctl00$PlaceHolderSearchArea$ctl01$ctl00=https://arhofoms.ru/oms');
data.Add('ctl00$PlaceHolderSearchArea$ctl01$SBScopesDDL=Этот сайт');
data.Add('ctl00$PlaceHolderMain$txtSearchSN='+DBEdit2.Text);
data.Add('ctl00$PlaceHolderMain$btnSearchStart=Найти');
html:=http.Post('https://78.37.97.251/oms/rrz/rrzsearchsn.aspx',data);
memo1.Lines.Add(html);
if pos('Внимание! По заданным условиям ничего не найдено.',html)> 0 then
Memo2.Text := 'Внимание! По заданным условиям ничего не найдено.'
else
a:=copy(memo1.Text,pos('<th class="ms-vh" nowrap>Наименование СМО</th></tr><tr class="ms-alternating"><td class="ms-vb">',memo1.Text)+96,140);
b:=copy(memo1.Text,pos('<th class="ms-vh" nowrap>Наименование СМО</th></tr><tr class="ms-alternating"><td class="ms-vb">',memo1.Text)+96,11);
c:=copy(a,pos('</td><td class="ms-vb">',a)+23,140);
d:=copy(a,pos('</td><td class="ms-vb">',a)+23,18);
e:=copy(c,pos('</td><td class="ms-vb">',c)+23,140);
f:=copy(c,pos('</td><td class="ms-vb">',c)+23,16);
g:=copy(e,pos('</td><td class="ms-vb">',e)+23,100);
Memo2.Text:=b;
Memo3.Text:=d;
Memo4.Text:=f;
Memo5.Text:=g;
end;

lmikle: пользуемся тегами!!!

Получается когда щелкаю по DBGrid результат выводит, но как сделать так чтобы автоматом все записи прошли этот цикл и записались в БД?
Заранее спасибо.

Последний раз редактировалось lmikle, 19.02.2016 в 19:13.
Ответить с цитированием
  #2  
Старый 22.02.2016, 21:51
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Создай цикл
Код:
For I:=0 to dbgrid.rows.count-1 do
Begin
Тут то что надо проделать....
End
Ответить с цитированием
  #3  
Старый 23.02.2016, 09:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от ApxaHGe1
Создай цикл
Код:
For I:=0 to dbgrid.rows.count-1 do
Begin
Тут то что надо проделать....
End
у TDBGrid никогда не было свойства Rows, оно ему не нужно, потому что есть цикл:
Код:
  ADOQuery1.First;
  while not ADOQuery1.Eof do
  begin
    (* do it *)
    ADOQuery1.Next;
  end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 23.02.2016, 10:54
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Цитата:
Сообщение от NumLock
у TDBGrid никогда не было свойства Rows, оно ему не нужно, потому что есть цикл:
Код:
  ADOQuery1.First;
  while not ADOQuery1.Eof do
  begin
    (* do it *)
    ADOQuery1.Next;
  end;
А если додумать самому и понять что нужно общее количество записей....DBGrid.DataSource.DataSet.RecordCount;
Ответить с цитированием
  #5  
Старый 23.02.2016, 10:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от ApxaHGe1
нужно общее количество записей
не нужно этого. цикла достаточно. тем более знание количества записей не явит свойства Rows у сетки)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 23.02.2016, 14:29
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Это даст общее количество записей!))))
И цикл делай от и до recordcount-1
Ответить с цитированием
  #7  
Старый 23.02.2016, 18:46
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

ApxaHGe1 вы видимо еще не сталкивались при таком подходе с большим объемом данных. Дело в том, что recordcount - функция которая активно работает с набором данных и если этот набор хотя-бы в 100000 вы уже получите задержку при вызове этого метода. Есть еще несколько подводных камней при использовании вашего метода, но это отдельная тема. Я не скажу, что использовать for категорически нельзя, но по возможности избегайте такого способа перебора данных.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
ApxaHGe1 (17.05.2016)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter