Jump to content
Fivewin Brasil

vagner

Membros
  • Posts

    4,981
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by vagner

  1. citação:http://forums.fivetechsupport.com/viewtopic.php?f=6&t=1612&start=45 João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 / 5150-7341 - TIM https://www.facebook.com/kapiaba FWH 2.7 - xHARBOUR WorkShop.Exe id=quote>id=quote>Nossa, só agora eles montaram ? Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  2. citação:Sim Vagner, nos testes que fiz deu certo com ano normal e bisexto... Inclusive no teste que acima não deu certo usando a outra função nessa funcao que fiz resultou certo. 31/12/2011 a 18/05/2012 resultou 00 anos 04 meses 18 dias 01/01/2012 a 18/05/2012 resultou 00 anos 04 meses 17 dias id=quote>id=quote>Olá, faça o teste também com 31/12/2010 a 18/05/2011 verá que retornará 00 anos 04 meses 18 dias Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  3. citação:Segue um código bem simples que fiz, faça mais alguns testes pra garantir. Function ContaDias() Local dData1 := CtoD("05/02/2005") Local dData2 := CtoD("02/04/2005") Local nDifAno Local nDifMes Local nDifDia //dData2++ // caso queira considerar o dia corrente. Ex: 01/01/2012 - 02/01/2012 => 2 dias. Caso queira desconsiderar comente a linha que o resultado seria 1 dia. nDifAno := Year(dData2)-Year(dData1) nDifMes := Month(dData2)-Month(dData1) nDifDia := Day(dData2)-Day(dData1) If Month(dData1) > Month(dData2) .or. (Month(dData1) == Month(dData2) .and. Day(dData1) > Day(dData2)) nDifAno-- nDifMes+=12 EndIf If Day(dData1) > Day(dData2) nDifMes-- nDifDia := Day(EoM(AddMonth(dData2,-1))) + nDifDia + 1 EndIf MsgStop(Str(nDifAno,2)+" anos "+Str(nDifMes,2)+" meses "+Str(nDifDia,6)+" dias") Return .f. // usar caso na sua versao do Harbour/xHarbour não tenha essa funcao que simplesmente retorna o ultimo dia do mes da data passada como parametro Static Function EoM(dData) Local dDatRet := dData dDatRet := AddMonth(dDatRet,1) // adiciona um mes a data dDatRet := CtoD("01/"+StrZero(Month(dDatRet),2)+"/"+Str(Year(dDatRet),4))-1 Return dDatRet Eduardo Motta emotta@gmail.com.br FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD id=quote>id=quote>Eduardo, vc considerou os anos bissextos ? Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  4. Olá, Encontrei uma função que montei uma vez /********************************************************* * Função : Ano_Mes_Dia() - Função para Calcular a Idade * Programador : vagner * Data : 23/10/2009 - 13:21:23 * Revisado em : 29/10/2009 - 22:05:46 Por : vagner * Parâmetros : * dDat1 - Primeira data * dDat2 - Segunda Data * cVari - Variável para atualizar * oObje - Objeto para atualizar **********************************************************/ Static Func Ano_Mes_Dia(dDat1,dDat2,cVari,oObje) Local nTotAnos,nTotMese,nTotDias Local nMesAnt,nAnoAnt,nDiaAnt Local dDataAnt Default dDat2 := Date() If Empty(dDat1) ; Retu(.T.) ; Endif If Empty(dDat2) ; Retu(.T.) ; Endif If dDat2 > Date() ; dDat2 := Date() ; Endif If Month(dDat2)+Day(dDat2) >= Month(dDat1)+Day(dDat1) nTotAnos := Year(dDat2) - Year(dDat1) nTotMese := Month(dDat2) - Month(dDat1) - Iif(Day(dDat2) >= Day(dDat1),0,1) Else nTotAnos := (Year(dDat2) - Year(dDat1)) - 1 nTotMese := (Month(dDat2)+12) - Month(dDat1) - Iif(Day(dDat2) >= Day(dDat1),0,1) Endif If Day(dDat2) >= Day(dDat1) nTotDias := Day(dDat2)-Day(dDat1) Else If Month(dDat2) == 1 nMesAnt := 12 nAnoAnt := Year(dDat2)-1 Else nMesAnt := Month(dDat2)-1 nAnoAnt := Year(dDat2) Endif If Day(dDat1) == 31 If nMesAnt == 2 ; nDiaAnt := Iif(Mod(nAnoAnt,4) == 0,29,28) ElseIf nMesAnt == 4 .or. nMesAnt == 6 .or. nMesAnt == 9 .or. nMesAnt == 11 ; nDiaAnt := 30 Else ; nDiaAnt := Day(dDat1) Endif ElseIf Day(dDat1) == 30 If nMesAnt == 2 ; nDiaAnt := Iif(Mod(nAnoAnt,4) == 0,29,28) Else ; nDiaAnt := Day(dDat1) Endif Endif dDataAnt := CtoD( StrZero(nDiaAnt,2,0)+"/"+ StrZero(nMesAnt,2,0)+"/"+ StrZero(nAnoAnt,4,0) ) nTotDias := dDat2 - dDataAnt Endif cVari := ( Iif(nTotAnos != 0,AllTrim(Str(nTotAnos,4,0)) + Iif(nTotAnos > 1," Anos" ," Ano")+" , ","")+Iif(nTotMese != 0,AllTrim(Str(nTotMese,2,0)) + Iif(nTotMese > 1," Meses"," Mês")+Iif(nTotDias != 0," e ",""),"")+Iif(nTotDias != 0,AllTrim(Str(nTotDias,2,0)) + Iif(nTotDias > 1," Dias" ," Dia"),Iif(nTotMese == 0,"Hoje",""))) oObje :Refresh() Retu( .T. ) id=code>id=code>Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  5. citação: citação:Olá, Como qualquer outro oget.... Valid(PesquisaSimilares(3,"Produtos","Num_Prod") SetKey(VK_F9,{||PesquisaSimilares(3,"Produtos","Num_Prod")}) Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez" id=quote>id=quote>fiz diferente, direto na classe, pra facilitar: no metodo new e redefine, coloquei isso: DEFAULT bAction := Nil If ::cBmpName <> Nil ::bKeyDown := { | nKey | iif( nKey == VK_F3 , Eval( ::bAction ) , "" ) } Endif id=code>id=code>RESOLVIDO !!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) id=quote>id=quote>Vc tb poderia ter dado uma olhada na VGet em dicas+dicas que faz isso e outras coisas Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  6. Olá, Como qualquer outro oget.... Valid(PesquisaSimilares(3,"Produtos","Num_Prod") SetKey(VK_F9,{||PesquisaSimilares(3,"Produtos","Num_Prod")}) Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  7. citação:Ola a todos ! tem como fazer o bAction do TGet() ser executado por tecla de funcao ? Desde ja agradeco: MUITO OBRIGADO !!! Gilberto Frohlich - Toledo/PR giba_f@hotmail.com giba_f@yahoo.com.br xHarbour xBuild+Fivewin 2.7+PellesC+(Postgres+DB2) id=quote>id=quote>Bom, Tudo depende, se o bAction, está executando uma função, sim Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  8. citação:Vagner, ficou show() de bola. Você poderia me enivar a função PintaDialogSemiTransparente() ? Acho que deve ser para dar uma melhorada no visual, certo ? Marciano Queiroz Teixeira de Freitas-Ba FW 10.12 + xHb 1.2.1 | BCC 5.82 | SQLLIB | PAF-ECF | TEF | NF-e | SPED Fiscal | PBM´s | Biometria | Ret.XML NF-e id=quote>id=quote>Olá, /********************************************************* * Função : PintaDialogSemiTransparente - Função para Tornar uma Dialog Semi-Transparente * Programador : Vagner * Data : 18/06/2008 - 19:07:11 * Revisado em : 18/06/2008 - 19:07:11 Por : vagner * Parâmetros : * oDlg - Objeto Dialog * nFat - Fator de Transparecencia Default 200 **********************************************************/ Func PintaDialogSemiTransparente(oDlg,nFat) Default nFat := 200 SetWindowLong( oDlg:hWnd, GWL_EXSTYLE, nOr( GETWINDOWLONG( oDlg:hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) ) SetLayeredWindowAttributes( oDlg:hWnd, nRgb(255,255,254),nFat, 3 ) SysWait(.01) return NIL id=code>id=code>ela coloca transparência na dialog Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  9. Olá, ... DEFINE Timer oTimerAviso Interval 30000 Action AvisoDeErros() Of oAppTray Activate Timer oTimerAviso ... /********************************************************* * Função : AvisoDeErros() - Aviso de Erro * Programador : vagner * Data : 30/07/2009 - 01:40:30 * Revisado em : 30/07/2009 - 02:41:13 Por : vagner * Parâmetros : **********************************************************/ Static Func AvisoDeErros() Local oDlgAviso,nLin,nCol,oFont0 oTimerDlgAviso := Nil Define Font oFont0 Name "Courier New" Size 0,-14 Bold oTimerAviso:DeActivate() nLin := oAppTray:nVertRes()-100 nCol := oAppTray:nHorzRes()-220 Define Dialog oDlgAviso From nLin,nCol To nLin+68,nCol+210 Color nRgb(0,0,0),nRgb(255,0,0) Pixel Style WS_POPUP+DS_SYSMODAL @ 00,000 Icon Name "MsgAlert" Of oDlgAviso @ 04,016 SSay "Monitoramento NFe" Size 80,10 Center Pixel Font oFont0 Color nRgb(255,255,255) @ 16,016 SSay "Erros Encontrados." Size 80,10 Center Pixel Font oFont0 Color nRgb(255,255,255) Activate Dialog oDlgAviso On Init(PintaDialogSemiTransparente(oDlgAviso,200),InicializaTempoAviso(oDlgAviso)) Valid(.F.) oTimerAviso:Activate() oFont0:End() If oTimerDlgAviso != Nil oTimerDlgAviso:End() oTimerDlgAviso := Nil Endif Retu(.T.) /********************************************************* * Função : InicializaTempoAviso() - Elimina o Aviso * Programador : vagner * Data : 30/07/2009 - 02:30:09 * Revisado em : 30/07/2009 - 02:30:11 Por : vagner * Parâmetros : * oDlgAviso - Dialog para Eliminar **********************************************************/ Static Func InicializaTempoAviso(oDlgAviso) DEFINE Timer oTimerDlgAviso Interval 3000 Action (oDlgAviso:bValid := {||.T.},oDlgAviso:End()) Of oDlgAviso Activate Timer oTimerDlgAviso Retu(Nil) id=code>id=code>Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  10. citação:Olá Amigos. Na dialog abaixo gostaria que ao iniciar o foco fosse para o primeiro GET e não para o primeiro botão. Como faço isto? Desde já agradeço Abraço DEFINE DIALOG oDlgf FROM 2,1 TO 35,95 TITLE 'Fechamento de Orçamento' FONT oFONTDLG oDlgf:Cargo := .F. @ 08,004 Button oBtnCancel Prompt "&Cadastra Transportadores" Size 85,15 Pixel; ACTION CADTRAN(oDlgf) Of oDlgf @ LINS(03.2),COLS(02) SAY "Condiçao Pgto:" @ LING(04.0),COLG(02) GET oGET VAR cCONDPAG PICT "@!" COLORS CLR_FONGET,CLR_FUNGET @ LINS(05.2),COLS(02) SAY "Transportador.:" @ LING(06.0),COLG(02) GET oCDTRAN VAR nCDTRAN PICT "999" COLORS CLR_FONGET,CLR_FUNGET; VALID CHKTRANS(nCDTRAN,oNOMTRAN ) ... id=code>id=code> Editado por - jfaguiar on 23/05/2012 11:56:22 id=quote>id=quote>Mais fácil é colocar o get antes do botão Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  11. Olá, Uso essa rotina já faz um tempinho, e sempre da certo com xharbour /********************************************************* * Função : Backup - Função para Efetuar os backups dos arquivos * Programador : Vagner * Data : 22/07/2008 - 14:00:09 * Revisado em : 19/05/2010 - 11:39:16 Por : vagner * Parâmetros : * lDia - Se é o backup diário não irá perguntar onde gravar **********************************************************/ Func Backup(lDia) Local cDireCopia Local cDireTempo Local cDiret Local cSay,cVer,cRev Local oBmp1,oBrush,oFont,oFon0,oFon1 Local hBmp1 Default lDia := .F. cDireTempo := oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretSegur If Empty(cDireTempo) ; cDireTempo := GetEnv("TMP") ; Endif If Right( cDireTempo, 1 ) == "\" ; cDireTempo = SubStr( cDireTempo, 1, Len( cDireTempo ) - 1 ) ; Endif If !Empty(cDireTempo) If !lIsDir(cDireTempo) ; cDireTempo := GetWinDir() ; Endif Else cDireTempo := GetWinDir() Endif lMkDir(cDireTempo) If !lDia Ini oIni File oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cArquiConfi Get cDiret Section "Backup" Entry "Diretório" Of oIni Default oSistema:cServidor__+oSistema:cDiretPadra EndIni cDireCopia := cGetDir32("Escolha onde Gravar !",cDiret) If Empty(cDireCopia) MsgStop("Você precisa escolher onde quer gravar."+CRLF+"Backup Cancelado.") Retu(.T.) Endif Else Define Brush oBrush Null Define BitMap oBmp1 Name "Reorganiza" Define Font oFont Name "Courier New" Size 0,-16 Bold Define Font oFon0 Name "Palatino Linotype" Size 0,-24 Bold Define Font oFon1 Name "Courier New" Size 0,-20 Bold Define Dialog oDlgBackup From 000,000 To 230,452 Pixel Style WS_POPUP Title "Backup" Brush oBrush cSay := AllTrim(oSistema:cNomeSystem+", Hoje : "+Dtoc(Date())) cVer := AllTrim("Versão : "+oSistema:cVersSystem) cRev := AllTrim("Revisão : "+oSistema:cReviSystem) @ 00,000 VSay cSay Pixel Size 220,14 Font oFont Color {nRgb(080,080,100),nRgb(158,158,198)} Center Of oDlgBackup @ 20,000 VSay cVer Pixel Size 220,18 Font oFon0 Color {nRgb(080,080,100),nRgb(158,158,198)} Center Of oDlgBackup @ 40,000 VSay cRev Pixel Size 220,18 Font oFon0 Color {nRgb(080,080,100),nRgb(158,158,198)} Center Of oDlgBackup @ 60,041 VSay "Efetuando Backup Diário !" Pixel Size 167,14 Font oFon1 Color {nRgb(080,080,100),nRgb(158,158,198)} Center Of oDlgBackup @ 80,041 VSay "Por Favor Aguarde !" Pixel Size 167,14 Font oFon1 Color {nRgb(080,080,100),nRgb(158,158,198)} Center Of oDlgBackup Activate Dialog oDlgBackup Center NoModal On Init PoeBarraDialog(oDlgBackup) On Paint(AbPaint(oDlgBackup:hDc,000,000,(hBmp1 := AbrePng(oDlgBackup:hDc,oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretGrafi+"Fundo.Png",236,456)),240) ) SysRefresh() cDireCopia := oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretSegur Endif DbSelectArea(oSistema:cArq__Sys0) Copy To (oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui+"Sys0.Dbf") aFiles := Directory(oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui+"*.Dbf") aFil := {} AEval(aFiles,{|x| Iif(!File(".\Dados\"+x[1]),AaDd(aFil,x),)}) aFiles := Directory(oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui+"*.Sys") AEval(aFiles,{|x| AaDd(aFil,x)}) aFiles := Directory(oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui+"*.Cfg") AEval(aFiles,{|x| AaDd(aFil,x)}) aFiles := {} aFiles := AClone(aFil) If !lDia ; oWnd:oMsgBar:MeterOn(Len(aFiles),430,"Copiando os Arquivos.",.T.) Else ; oDlgBackup:oMsgBar:MeterOn(Len(aFiles),430,"Copiando os Arquivos.",.T.) Endif nPos := 0 Aeval(aFiles, {|aFile| Iif(VerificaArquivoTemporario(aFile[1],oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui,"Normal"),CopiaParaTemporario(aFile[1],cDireTempo+"\",++nPos,oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui,lDia,aFile[2]/8192),) } ) If !lDia ; oWnd:oMsgBar:MeterOff() Else ; oDlgBackup:oMsgBar:MeterOff() Endif aFiles := Directory(".\Dados\*.Dbf") If !lDia ; oWnd:oMsgBar:MeterOn(Len(aFiles),430,"Copiando os Arquivos.",.T.) Else ; oDlgBackup:oMsgBar:MeterOn(Len(aFiles),430,"Copiando os Arquivos.",.T.) Endif nPos := 0 Aeval(aFiles, {|aFile| Iif(VerificaArquivoTemporario(aFile[1],".\Dados\","Dados"),CopiaParaTemporario(aFile[1],cDireTempo+"\",++nPos,".\Dados\",lDia,aFile[2]/8192),) } ) If !lDia ; oWnd:oMsgBar:MeterOff() Else ; oDlgBackup:oMsgBar:MeterOff() Endif aFiles := Directory(cDireTempo+"\*.Dbf") aFile := {} Aeval(aFiles, {|aFil| AaDd(aFile,cDireTempo+"\"+aFil[1]) } ) cArq := oSistema:cNomeSystem+DtoS(Date())+Left(StrTran(Time(),":",""),4) If !lDia oWnd:oMsgBar:MeterOn(Len(aFile),430,"Compactando os Arquivos.") nPos := 0 If ZipCreate( cDireCopia+"\"+cArq, aFile,8, {|cFile,nAt| (oWnd:oMsgBar:nAnter2 := 0,oWnd:oMsgBar:cMetTexto2 := AllTrim(cFile),oWnd:oMsgBar:MeterSet((nPos := nAt),100)) }, , , , ,{|nQual,nTotal| (AaDd(aTest,{nQual,nTotal}),oWnd:oMsgBar:nTotal2 := nTotal,oWnd:oMsgBar:MeterSet(nPos,nQual)) }) MsgInfo("Copia Realizada Com Sucesso.","Atenção !!") Endif oWnd:oMsgBar:MeterOff() Else oDlgBackup:oMsgBar:MeterOn(Len(aFile),430,"Compactando os Arquivos.",.T.) nPos := 0 aTest := {} ZipCreate( cDireCopia+"\"+cArq, aFile,8, {|cFile,nAt| (oDlgBackup:oMsgBar:nAnter2 := 0,oDlgBackup:oMsgBar:cMetTexto2 := AllTrim(cFile),oDlgBackup:oMsgBar:MeterSet((nPos := nAt),100)) }, , , , ,{|nQual,nTotal| (AaDd(aTest,{nQual,nTotal}),oDlgBackup:oMsgBar:nTotal2 := nTotal,oDlgBackup:oMsgBar:MeterSet(nPos,nQual)) }) oDlgBackup:oMsgBar:MeterOff() Endif If !lDia ; oWnd:oMsgBar:MeterOn(Len(aFile),430,"Eliminando Arquivos Temporários.") Else ; oDlgBackup:oMsgBar:MeterOn(Len(aFile),430,"Eliminando Arquivos Temporários.") Endif For nX := 1 To Len(aFile) If !lDia ; oWnd:oMsgBar:MeterSet(nX) Else ; oDlgBackup:oMsgBar:MeterSet(nX) Endif cFile := aFile[nX] FErase(cFile) Next If !lDia ; oWnd:oMsgBar:MeterOff() Else ; oDlgBackup:oMsgBar:MeterOff() Endif If !lDia Ini oIni File oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cArquiConfi Set Section "Backup" Entry "Diretório" To cDireCopia Of oIni EndIni Else oDlgBackup:End() oBrush:End() oFont:End() oFon0:End() oFon1:End() DeleteObject(hBmp1) Endif If !lDia Close Data AbreArquivos() Endif Retu(.T.) /********************************************************* * Função : PoeBarraDialog - Funcao para colocar a barra de mensagem na dialog de copias * Programador : Vagner * Data : 14/03/2011 - 09:19:17 Por : Vagner * Revisado em : 16/03/2011 - 08:20:29 Por : Vagner * Parâmetros : * oDlg - Dialog para colcoar a Barra * cMsg - Mensgem para colocar default "" * nAlt - Altura da Barra Defalt 36 **********************************************************/ Func PoeBarraDialog(oDlg,cMsg,nAlt) Default cMsg := "" Default nAlt := 36 Set VMessage Of oDlg To "" Vista Dialog Altura nAlt Retu(Nil) /********************************************************* * Função : VerificaArquivoTemporario - Função para Verificar se houve mudança no arquivo * Data : 08/11/2011 - 15:12:52 Por : Vagner * Revisado em : 08/11/2011 - 15:12:55 Por : Vagner * Parâmetros : * cFile - Arquivo * cDire - Diretório de Onde copiar * cSess - Sessão **********************************************************/ Static Func VerificaArquivoTemporario(cFile,cDire,cSess) Local cArqu := "" Local cNew_ := "" Local lReto := .F. Local oIni Ini oIni File oSistema:cServidor__+oSistema:cDiretPadra+"CopiaArquivo.Cfg" Get cArqu Section cSess Entry cFile Of oIni Default "" EndIni If (cNew_ := HB_MD5File(cDire+cFile)) != cArqu .or. Empty(cArqu) Ini oIni File oSistema:cServidor__+oSistema:cDiretPadra+"CopiaArquivo.Cfg" Set Section cSess Entry cFile To cNew_ Of oIni EndIni lReto := .T. Endif Retu(lReto) /********************************************************* * Função : CopiaparaTemporario - Função para Copiar os Arquivos para um Diretório Temporário * Programador : Vagner * Data : 22/07/2008 - 14:00:09 * Revisado em : 19/05/2010 - 11:54:32 Por : vagner * Parâmetros : * cFile - Arquivo * cTemp - Diretório Temporário * nPosi - Arquivo Atual para o Meter * cDire - Diretório de Onde copiar * lDiar - Se é diário não colocar a barra * nQtde - Quantidade de bits transferido **********************************************************/ Static Func CopiaparaTemporario(cFile,cTemp,nPosi,cDire,lDiar,nQtde) Local oObjMeter := Iif(lDiar,oDlgBackup:oMsgBar,oWnd:oMsgBar) Local nCop := 0 oObjMeter:nTotal2 := nQtde oObjMeter:nAnter2 := 0 oObjMeter:cMetTexto2 := AllTrim(cFile) //"Copiando os Registros" oObjMeter:MeterSet(nPosi,0) __COPYFILE( cDire+cFile , cTemp+cFile , {|| oObjMeter:MeterSet(nPosi,++nCop) }) Retu(.T.) /********************************************************* * Função : ZipCreate - Função para Criar o Zip * Programador : Vagner * Data : 22/07/2008 - 14:00:09 * Revisado em : 22/07/2008 - 14:00:11 Por : vagner * Parâmetros : Direto da Função **********************************************************/ Static Func ZipCreate(cFile, uContents, nLevel, bUpdate, lOverwrite, password,lPath, lDrive, bFileUpdate) Local lRet Default lOverwrite := .t. Default lPath := .t. lRet := HB_ZIPFILE( cFile, uContents, nLevel, bUpdate, lOverwrite,password, lPath, lDrive, bFileUpdate) Return(lRet) id=code>id=code>Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  12. citação:Vagner se ele mudar as permissões, não sei se pode comprometer o acesso ao arquivo com outras estações conectadas. Se alguma delas fechar e abrir o arquivo após um outro terminal ter saido do mesmo, isto iria provavelmente dar conflito de permissões... E ainda há o caso do usuario tentar copiar o arquivo quando o sistema estiver na tela de login, ae fica bem complicado de gerenciar isto. Num cenário onde o acesso ao servidor não pode ser comprometido, eu já pensaria logo em um TS, SSH, NetIO ou LetoDB rodando para impedir a cópia não autorizada... Att, Vailton Renato id=quote>id=quote>Realmente Vailton, Mas já que ele quer alguma coisa, eu acho desnecessário isso, mas ele pode usar a rotina que eu postei no outro tópico , destrava abre e já trava, o arquivo fica na memória aberto, mas travado, dificultando a leitura Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  13. Bom, Creio que vc não saiba quem pode copiar ou não os dados né ? então o que vc pode fazer é na saida do seu programa retirar todas as permissões, e qndo entrar colocar as permissões Na saída ChMod 000 SeuDbf.Dbf Na Entrada ChMod 555 SeuDbf.Dbf Veja esse outro link muito bem explicado http://www.treinalinux.com.br/dvd/degraca/chmod/ Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  14. Uma rotina para proteger e desproteger o dbf /********************************************************* * Função : DbProtect() - Funcao para Proteger os DBFS para abertura externa * Programador : vagner * Data : 19/12/2008 - 10:56:01 * Revisado em : 19/12/2008 - 10:56:03 Por : vagner * Parâmetros : * cDbf - Arquivo pra proteger * lPro - Se Protege ou desprotege - Default .T.-Protege **********************************************************/ Func DbProtect(cDbf,lPro) Local nHandle := 0, cFile Local cBuffer := Space(32) Default lPro := .T. cFile := oSistema:cServidor__+oSistema:cDiretPadra+oSistema:cDiretArqui+cDbf+".Dbf" If File(cFile) nHandle := FOpen(cFile,66) If nHandle # -1 If FRead(nHandle,@cBuffer,32) == 32 If lPro // Proteger If SubStr(cBuffer,1,1) # Chr(26) cBuffer := Chr(26)+SubStr(cBuffer,1,31) Endif Else // Desproteger If SubStr(cBuffer,1,1) == Chr(26) cBuffer := SubStr(cBuffer,2,31)+ Chr(0) Endif Endif FSeek(nHandle,0) FWrite(nHandle,cBuffer,32) Endif FClose(nHandle) Endif Endif Retu (NIL) id=code>id=code>Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  15. Olá, Bom, para começar o Excel não roda no Linux, então o seu problema é com o Windows O que vc poderia fazer, seria criptografar o seu arquivo, mas isso não impedirá que o Excel(Micro$oft) abra o arquivo , uma coisa que vc poderia fazer tb é mudar a primeira letra do arquivo, fazendo com que ele deixe de ser "DBF" com abertura normal, porém vai ter q mudar sua rotina para abertura de arquivos, senão não vai mais abrir ehehheeh Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  16. citação: citação:kapi, Attrib não funciona no Linux. O que podes fazer para tornar uma pasta ou um arquivo oculto é simples. Basta renomear o arquivo colocando um ponto (.) na frente do nome. Ex: renomear arquivo.dbf para .arquivo.dbf Kleyber Derick xHarbour 1.1.0 + FWH 8.02 + xDevStudio + SQLLIB (98) 8162-1301 Visite São Luís - MA A Ilha dos Amores id=quote>id=quote>Fala mestre, este LINUX realmente é uma bostcha... kkkk Mas neste caso, o programa vai "enxergar" o arquivo.dbf?? Ou tenho que mudar o programa para . tambem?? João Santos - São Paulo. joao@pleno.com.br Fone: (11) 3106-2832 / 5150-7341 - TIM https://www.facebook.com/kapiaba FWH 2.7 - xHARBOUR WorkShop.Exe id=quote>id=quote>Não é pq vc não sabe usar que seja uma ... como vc disse, ninguém têm culpa de vc não ter uma melhor visão das coisas Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  17. Olá http://www.vivaolinux.com.br/dica/Chmod-+-dicas/ Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  18. Parabéns, atrasado Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  19. Olá, 1ªmente, seja muito bem vindo 2ªmente, na página principal, em dicas+dicas, encontrará uma infinidade de exemplos Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  20. citação:então deixei a funcao abaixo dentro winfunc.prg assim: FUNCTION RCmLine( nTop, nLeft, nBottom, nRight, oPen ) INLINE ::Cmtr2Pix(@nTop, @nLeft), ::Cmtr2Pix(@nBottom, @nRight),; MoveTo( ::hDCOut, nLeft, nTop ),; LineTo( ::hDCOut, nRight, nBottom,; If( oPen != nil, oPen:hPen, 0 ) ) veja o erro que aparece quando compilo: 1. I:\teste\winfunc.prg(25) Error E0030 Syntax error: "syntax error at 'INLINE'" 2. I:\teste\winfunc.prg(29) Error E0030 Syntax error: "syntax error at ','" eu acho que é esse inline nao achei ele nos CH Ronaldo Minacapelli (11) 2950 3069 id=quote>id=quote>Oi vc pegou o Method e jogou para funcion, não pode FUNCTION RCmLine( nTop, nLeft, nBottom, nRight, oPen ) Local Self := HB_QSelf() ::Cmtr2Pix(@nTop, @nLeft) ::Cmtr2Pix(@nBottom, @nRight) MoveTo( ::hDCOut, nLeft, nTop ) LineTo( ::hDCOut, nRight, nBottom Retu(Nil) Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  21. Corrigindo o Kleyber, Não coloque dentro do Main(), por ser uma função não pode ficar dentro de outra função Mas pode colocar no mesmo prg do Main() Me Corrigindo O que fica dentro do prg é a sua função Dentro do Main, é o que o : OVERRIDE METHOD CmLine IN CLASS TPRINTER WITH RCmLine Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  22. Olá, Geralmente as impressoras de código de barra, possuem linguagem própria, aí precisa escrever os códigos dá uma olhada no manual da impressora Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  23. vagner

    Busca xml

    citação: citação:para baixar o xml da receita federal vai precisar ter o certificado digital do emitente ou destinatario xharbour 1.1.0 + gtwvw + fw 8.04+vsx e começando + xbrowse migrando p/ o 10.2 e nfe (classe do gilmer) e futuramente paf-ecf msn..: zazibr@hotmail.com skype: zazibr Daniel lopes Filho Campo Grande/MS id=quote>id=quote>Correto zazibr, mas o que gostaria é de eliminar alguns passos, seja automatizar isto. Crisvam - xHarbour_FWH_10.11 - Whorkshop id=quote>id=quote>Peça para o fornecedor, enviar o xml e puxe os dados por ele P.S.: O Fornecedor é obrigado a mandar o xml Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  24. Olá, Olhe em dicas, procure por replicação (se não me engano ou replicar) Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
  25. Olá, Tente : WinExe("h:\desenvolvimento\Gerdoc\ged.exe d,1,1") Vagner Wirts "Ele não sabendo que era impossível, foi lá e fez"
×
×
  • Create New...