Вот список осужденных, упорядоченных по концу срока.
Копируем "form1.sct" и "form1.scx" в папку Form базы данных.
Копируем "Конец срока.dot" в папку Reports базы данных.
Documents.zip 31,29К 16 Количество загрузок:
Создаем новый макрос "Конец срока" в режиме администрирования:
*===================================================================
* Макрос формирует список осужденных с концом срока
* указанного интервала
*-------------------------------------------------------------------
LOCAL loWord, loDoc, lnRowNum
LOCAL lMyRetVal, loDate1, loDate2, lcMestoP
LOCAL path, lcBuffer
LOCAL lcI
do form (_Form + "form1.scx") to lMyRetVal
loDate1 = substr(lMyRetVal, 1, 10)
loDate2 = substr(lMyRetVal, 12, 10)
DECLARE INTEGER GetPrivateProfileString IN Win32API;
STRING cSection, STRING cKey, STRING cDefault, STRING @cBuffer, ;
INTEGER nBufferSize, STRING cINIFile
path = addbs(_prg) + gcstationinifile
lcBuffer = space(1024)
GetPrivateProfileString("System", "Reports", "", @lcBuffer, len(lcBuffer), path)
for lcI = 1024 to 1 step -1
if substr(lcBuffer, lcI, 1) = ""
exit
endif
next
loWord = createobject('Word.Application')
loDoc = m.loWord.Documents.Add(substr(lcBuffer, 1, lcI) + 'Конец срока.dot')
m.loWord.Visible = .T.
select cast(iif(empty(vkonecsrok), evl(vkonecsrok,NULL), ctod(vkonecsrok)) as date) ;
as vkonecsrok1,vfamily,vname,vlastname,vlichndelo,vnomotr,vmestopgos,vmestopobl,;
vmestopgor,vmestopadr from card where ctod(vkonecsrok) >= ctod(loDate1) ;
and ctod(vkonecsrok) <= ctod(loDate2) ;
and vpr_osv=0 and vpobeg=0 and vubylpost=0 and vumer=0 into cursor ;
buf_cursor order by vkonecsrok1
m.loWord.Selection.Find.ClearFormatting
m.loWord.Selection.Find.Replacement.ClearFormatting
m.loWord.Selection.Find.Execute('[КС1]', .F., .F., .F., .F., .F., .T., .F., .F., loDate1, 2)
m.loWord.Selection.Find.ClearFormatting
m.loWord.Selection.Find.Replacement.ClearFormatting
m.loWord.Selection.Find.Execute('[КС2]', .F., .F., .F., .F., .F., .T., .F., .F., loDate2, 2)
loTable = m.loDoc.Tables(1)
lnRowNum = 2
select buf_cursor
scan
m.loTable.Rows.Add()
m.loTable.Cell(m.lnRowNum, 1).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 1).Range.Text = alltrim(str(lnRowNum - 1)) + "."
m.loTable.Cell(m.lnRowNum, 2).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 2).Range.Text = buf_cursor.vkonecsrok1
m.loTable.Cell(m.lnRowNum, 3).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 3).Range.Text = alltrim(buf_cursor.vfamily)
m.loTable.Cell(m.lnRowNum, 4).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 4).Range.Text = alltrim(buf_cursor.vname)
m.loTable.Cell(m.lnRowNum, 5).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 5).Range.Text = alltrim(buf_cursor.vlastname)
m.loTable.Cell(m.lnRowNum, 6).Range.Font.Bold = .F.
m.loTable.Cell(m.lnRowNum, 6).Range.Text = alltrim(buf_cursor.vlichndelo)
lnRowNum = lnRowNum + 1
endscan
ОТЧЕТ ВЫЗЫВАЕТСЯ ЧЕРЕЗ МАКРОСЫ (!)
Сообщение отредактировал TwoFace: 04 Март 2015 - 05:47