|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Запись результата в БД
Добрый день.
Задача стоит такая выгрузить полиса из базы данных, отправить их на сайт программным путем, далее спарсить полученные результаты и записать в базу данных. Это надо для того что бы определять у кого из людей полис активный, а у кого нет. Подключаюсь к БД 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
|
|||
|
|||
Создай цикл
Код:
For I:=0 to dbgrid.rows.count-1 do Begin Тут то что надо проделать.... End |
#3
|
||||
|
||||
Цитата:
Код:
ADOQuery1.First; while not ADOQuery1.Eof do begin (* do it *) ADOQuery1.Next; end; Пишу программы за еду. __________________ |
#4
|
|||
|
|||
Цитата:
|
#5
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#6
|
|||
|
|||
Это даст общее количество записей!))))
И цикл делай от и до recordcount-1 |
#7
|
||||
|
||||
ApxaHGe1 вы видимо еще не сталкивались при таком подходе с большим объемом данных. Дело в том, что recordcount - функция которая активно работает с набором данных и если этот набор хотя-бы в 100000 вы уже получите задержку при вызове этого метода. Есть еще несколько подводных камней при использовании вашего метода, но это отдельная тема. Я не скажу, что использовать for категорически нельзя, но по возможности избегайте такого способа перебора данных.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
ApxaHGe1 (17.05.2016)
|