Ir para conteúdo
Fórum Script Brasil

MICHELI_MARTINS

Membros
  • Total de itens

    84
  • Registro em

  • Última visita

Tudo que MICHELI_MARTINS postou

  1. Boa tarde. Possuo um sistema em delphi 2010, que roda normalmente em windows 7 e windows vista e em rede. Acontece que preciso coloca-lo em uma maquina com windows xp. Quando peço a execução ocorre esse erro: Não foi possível localizar o ponto de entrada do procedimento com a msvcrt.dll. Tentei substituir a dll no xp por uma mais nova, mas a maquina depois nem entrava o operacional. Tive que voltar a dll antiga. alguém sabe como resolver isso? Meu sistema é banco sql 2005 e uso componentes ado para conexao. Obrigada.
  2. deu certo com 4 aspas simples. obrigada.
  3. bom dia. tenho um select que funciona perfeitamente no sql 2005, porem quando jogo ele na query no delphi da erro [DCC Error] relatorios.pas(877): E2015 Operator not applicable to this operand type no sql 2005: select distinct substring(convert(char,year(data)),1,4) +'/'+ substring(convert(char,month(data)),1,2) as mesano from orcamentos no delphi sql.Clear; sql.Add(' select distinct substring(convert(char,year(data)),1,4)+'/'+substring(convert(char,month(data)),1,2) as mesano, '); o problema esta no '/' que o delphi não consegue interpretar. como resolvo isso? obrigada.
  4. Deu certo!!! agora tem como você me explicar a magica? Obrigada viu?
  5. p:= 'd:\sample.bmp'; SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(pansichar(p))); tb não funcionou. não entendo porque ele interpreta diferente, afinal é o mesmo caminho de SendMessage(CaptureWindow, WM_CAP_SAVEDIB, 0, longint(pansichar('d:\sample.bmp'))); não queria ter que colocar fixo......
  6. operador não se aplica a este tipo de operando longint(PAnsichar(path) + PAnsichar('sample.bmp'))
  7. na verdade a linha fica assim: SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('c:\temp\sample.bmp'))); -- tirei o 1 do final. Aqui ele grava certo, desde que as opçoes de segurança da maquina permitam. o problema (acredito eu) vem do pansichar com o meu path (que é d:\) não sei porque. se eu colocar direto SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar('d:\sample.bmp'))); ele grava agora se eu coloco SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path + 'sample.bmp'))); não grava, isso considerando meu path como d:\ é esse o problema so não sei como resolver tanto que esse codigo no 2007 funcionava, mas ao invés de pansichar era so char.
  8. bom ate onde eu vi não precisa instalar compenente. eu estou usando essa funçao aqui: function capCreateCaptureWindowA(lpszWindowName : PCHAR; dwStyle : longint; x : integer; y : integer;nWidth : integer;nHeight : integer;ParentWin : HWND; nId : integer): HWND; STDCALL EXTERNAL 'AVICAP32.DLL'; que usa a dll externa avicap32.dll a captura da cam funciona mostra certinho então acho que todas as declarações foram feitas. ela so não esta salvando a imagem em bmp. faço assim: if CaptureWindow <> 0 then exit; CaptureWindow:= capCreateCaptureWindowA('CAPTURA CAM',WS_CHILD or WS_VISIBLE ,panel5.Left,panel5.Top,395,350,panel5.Handle,0); if CaptureWindow <> 0 then begin SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_ERROR, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_CALLBACK_STATUS, 0, 0); SendMessage(CaptureWindow, WM_CAP_DRIVER_CONNECT, 0, 0); SendMessage(CaptureWindow, WM_CAP_SET_SCALE, 1, 0); SendMessage(CaptureWindow, WM_CAP_SET_PREVIEWRATE, 66, 0); SendMessage(CaptureWindow, WM_CAP_SET_OVERLAY, 1, 0); SendMessage(CaptureWindow, WM_CAP_SET_PREVIEW, 1, 0); até aqui ta ok. problema é aqui: SendMessage(CaptureWindow, WM_CAP_GRAB_FRAME, 0, 0); SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(PAnsichar(path + 'tmp.bmp'))); SendMessage(CaptureWindow, WM_CAP_DRIVER_DISCONNECT, 0, 0);
  9. boa tarde. pessoal ate então tinha um sistema em delphi 2007 que funcionava certinho. porem passei para delphi 2010 e a captura de video não esta salvando o bmp. o codigo: SendMessage(CaptureWindow, WM_CAP_FILE_SAVEDIB, 0, longint(char(path + 'tmp.bmp'))); o problema é que no delphi 2010 não aceita char acusa erro de invalid typecast, tentei mudar para pchar mas não grava. alguém tem alguma ideia?
  10. tem alguma propriedade do checkbox que já traga ele preenchido como N ou terei que inserir isso toda vez que fizer um registro novo?
  11. jhonas bom dia. No dbcheckbox no delphi coloquei ValueChecked = S, ValueUnchecked = N, e AllowGrayed =False. E no banco sql server mudei o campo pago1 para char (1). é isso mesmo? ainda esta trazendo sombreado.
  12. ola jhonas. o problema é que este campo na tabela esta de fato vazio. e ele não esta trazendo ticado. é como se fosse assim: ticado = true não ticado = false sombreado = null entende? so que esse "null" com esse V no checkbox sombreado causa distorção pro usuario final que "acha" que a conta foi paga só porque o campo esta marcando este sombreamento. eu quero tirar esse sombreamento.
  13. boa tarde pessoal. tenho um aplicativo meu rodando tudo ok. quando clico para abertura de tela, os dbcheckboxes estao brancos desmarcados que no caso não trazem nada. o problema é quando abro a tabela, automaticamente o dbcheckbox muda para um v sombreado, apesar de não estar ticado, (pois o ticado fica negrito) gostaria de remover isso e deixar o branco normal. alguém sabe como tirar isso?
  14. não fulvio, ainda não deu. com esse select ele conta apenas um primeiro emplacamento e uma renovação licença entre os dias 3 e 4. nesses dois dias foram uma renovaçao licença e 3 primeiros emplacamentos. select count(s.servico), s.codigo from servicos s where s.codigo in (select it.grupo from itensorcamento it, orcamentos o where o.numero = it.codigoref and it.grupo=s.codigo AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-03' AND '2010-03-04') group by s.servico, s.codigo order by servico codigo ----------- -------------------- 1 1 1 9 preciso que apareça assim: codigo ----------- -------------------- 3 1 1 9 o que melhor se assemelha ao que eu preciso é esse select aqui: SELECT S.SERVICO, S.CODIGO FROM ITENSORCAMENTO I, ORCAMENTOS OS, SERVICOS S WHERE (I.CODIGOREF) = (OS.NUMERO) AND S.CODIGO = I.GRUPO AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-03' AND '2010-03-04' GROUP BY I.CODIGOREF,S.SERVICO,S.CODIGO SERVICO CODIGO ---------------------------------------- -------------------- RENOVAÇÃO DA LICENÇA 9 PRIMEIRO EMPLACAMENTO 1 PRIMEIRO EMPLACAMENTO 1 PRIMEIRO EMPLACAMENTO 1 entre esses dias são 4 orcamentos, so que preciso que ele coloque desse jeito: SERVICO CODIGO total ---------------------------------------- -------------------- RENOVAÇÃO DA LICENÇA 9 1 PRIMEIRO EMPLACAMENTO 1 3
  15. Fulvio, eu rodei os dois scripts. Na verdade esta contando como se fosse os subitens e não o serviço em si. eu preciso que ele conte para cada orçamento o serviço e não os subitens dele. select count (s.servico), s.codigo from servicos s, itensorcamento i where s.codigo = i.grupo and i.codigoref = (select top 1 it.codigoref from orcamentos orc, itensorcamento it where orc.numero = it.codigoref and it.grupo=s.codigo AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-04' AND '2010-03-04') group by s.servico, s.codigo order by servico codigo ----------- -------------------- 10 1 (1 row(s) affected) neste dia especifico entrou so um primeiro emplacamento que possui 10 subitens na itensorcamento referenciando o grupo 1 (serviços) entendeu? preciso que ele conte apenas o numero de serviços, porque na verdade so tem um orçamento com um primeiro emplacamento, com 10 subitens do primeiro emplacamento. teria que estar fazendo assim: select (s.servico), s.codigo from servicos s, itensorcamento i where s.codigo = i.grupo and i.codigoref = (select top 1 it.codigoref from orcamentos orc, itensorcamento it where orc.numero = it.codigoref and it.grupo=s.codigo AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-04' AND '2010-03-04') group by s.servico, s.codigo,i.codigoref order by servico servico codigo ---------------------------------------- -------------------- PRIMEIRO EMPLACAMENTO 1 so que se eu coloco o count no serviço ele me retorna 10 ao invés de 1.
  16. fulvio o primeiro select nem traz resultado, select s.servico, s.codigo from servicos s, itensorcamento i,ORCAMENTOS OS where s.codigo = i.grupo AND OS.NUMERO = I.CODIGOREF AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-03' AND '2010-03-04' and i.codigoref = (select top 1 it.codigoref from orcamentos orc,itensorcamento it where orc.numero = it.codigoref and it.grupo=s.codigo) order by servico o segundo traz mas continua trazendo uma totalização de itens de orcamento quando na verdade quero só o servico, é como se ele contasse o grupo em 10 serviços (por exemplo) para um mesmo orcamento. select COUNT(s.servico), s.codigo from servicos s, itensorcamento i,ORCAMENTOS OS where s.codigo = i.grupo AND OS.NUMERO = I.CODIGOREF AND CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN '2010-03-03' AND '2010-03-04' and i.codigoref in (select it.codigoref from orcamentos orc,itensorcamento it where orc.numero = it.codigoref and it.grupo=s.codigo) GROUP BY S.SERVICO,s.codigo order by servico nesse select, para o servico de codigo 1 esta trazendo 30 quando era pra trazer 3, e para o de codigo 9 esta trazendo 12 (que são seus 12 subitens), quando na verdade so existe um orçamento pra ele.
  17. o problema não é fazer o count. ate ai eu consigo fazer porem as tabelas estao alinhadas assim: os.numero i.codigoref s.servico uma ordem de servico possui varios itens de orcamento que pertencem ao grupo x so que no caso eu preciso para cada ordem de servico contar apenas uma vez o servico e não todas as vezes que ele aparecer na itens de orcamento se eu fizer o count direto ao invés de 3 primeiros emplacamentos ele vai me jogar 10 primeiros emplacamentos por causa da itens de orcamento (cada servico, no caso primeiro emplacamento possui varios subitens necessarios). precisaria de algo como o distinct que conta apenas uma vez... não sei se consegui te passar o problema..
  18. gente boa tarde. estou com uma duvida aqui... é o seguinte tenho um script de sql assim: select (s.servico), s.codigo from servicos s, itensorcamento i, orcamentos os where s.codigo = i.grupo and os.numero = i.codigoref and cast(floor(cast(data as float)) as datetime) between '2010-03-03' and '2010-03-04' group by s.servico, s.codigo, os.numero order by servico que me retorna no banco: servico codigo primeiro emplacamento 1 primeiro emplacamento 1 primeiro emplacamento 1 renovaçao licenca 9 acontece que eu queria contar os tipos de servico por exemplo no caso do primeiro emplacamento seriam 3 e na renovacao licença seria 1 como faço isso?
  19. gente bom dia. estou há uma semana tentando achar uma solução para o meu problema porem ainda não consegui. tenho um relatorio que mostra os dados de clientes agrupados por loja (uma banda grupo, uma detalhe) com a seguinte query : SELECT LOJA,DATA,NUMERO,PLACA,CLIENTE,VALORCONTRATADO,VALORSERVICOS,ADIANTAMENTO1, ADIANTAMENTO2,ADIANTAMENTO3,TOTALGERAL,HONORARIOS FROM ORCAMENTOS WHERE CAST(FLOOR(CAST(DATA AS float)) AS datetime) BETWEEN :DATAINICIAL AND :DATAFINAL AND (PRONTO <> 'TRUE' OR PRONTO IS NULL) AND (LOJA = :LOJA or :LOJA = '') GROUP BY LOJA,DATA,NUMERO,PLACA,CLIENTE,VALORCONTRATADO,VALORSERVICOS,ADIANTAMENTO1, ADIANTAMENTO2,ADIANTAMENTO3,TOTALGERAL,HONORARIOS ORDER BY LOJA e preciso montar uma outra query que no caso mostraria uma totalizaçao de serviços feitos ( não valores, mas sim quantidades de cada serviço que foi feito naquele mes). esta segunda query ficou assim: SELECT COUNT(S.CODIGO) AS QUANTIDADE, S.SERVICO FROM SERVICOS S, ITENSORCAMENTO O, ORCAMENTOS OS WHERE S.CODIGO = O.GRUPO AND O.CODIGOREF = OS.NUMERO AND (PRONTO <> 'TRUE' OR PRONTO IS NULL) AND (LOJA = :LOJA or :LOJA = '') AND OS.NUMERO = :NUMERO GROUP BY SERVICO ORDER BY SERVICO no sql server ela mostra certinho o total de serviços agrupados, porem o problema esta sendo juntar as duas no quick, uma vez que são independentes. se no caso eu montasse o relatorio com apenas esta ultima ele apareceria normal como no sql, já que a propriedade do quickrep1 estaria apontando para tabela servicos. o problema está no quickprep1 porque ele tem que apontar para a tabela central orcamentos e quando eu faço isso não consigo uma totalização de quantidades de serviços, e sim uma subdetalhe de cada orçamento printado. o que eu preciso é que ele mostre todos os orçamentos e no final do relatorio me diga quantidade de serviço e nome do serviço para cada tipo de serviço prestado. existe algum jeito de fazer isto?
  20. bom dia pessoal. estou com essa mensagem de erro quando dou um ok em um botao que faz o post da gravação no banco sql. porem não estou conseguindo localizar o erro. eu ate entendo que ele esta pedindo um insert ou um edit antes de dar o post. so que mesmo fazendo o debug a aplicação para em cima do post e não me deixa localizar onde esta o erro. alguém sabe como eu posso fazer o debug localizar isso pra mim? segue um pedaço do codigo do botao ok: begin IF APPLICATION.MessageBox('CONFIRMA A INCLUSÃO OU A ' + 'ALTERAÇÃO DESTE REGISTRO? ', 'CONFIRMAÇÃO', MB_YESNO + MB_ICONINFORMATION) = IDYES THEN BEGIN TABELANUMEROS.SQL.Clear; TABELANUMEROS.SQL.ADD('UPDATE NUMEROS SET USADO =:USADO WHERE NUMERO =:NUMERO AND USUARIO =:USUARIO'); TABELANUMEROS.ParamByName('USUARIO').ASSTRING:= DBUSUARIO.Text; TABELANUMEROS.PARAMBYNAME('NUMERO').ASSTRING:= DBNUMERO.TEXT; TABELANUMEROS.PARAMBYNAME('USADO').ASSTRING:= 'SIM'; TABELANUMEROS.ExecSQL; TBLORCAMENTOS.FieldByName('NUMERO').ASSTRING:= DBNUMERO.TEXT; if DBPRONTO.Checked = True then begin LABELDOCUMENTOPRONTO.Caption:= 'DOCUMENTO PRONTO DIA: ' + DBDATAPRONTO.FIELD.TEXT; end; TBLORCAMENTOS.POST; LABELDOCUMENTOPAGO.Visible:= FALSE; LABELDOCUMENTOPRONTO.VISIBLE:= FALSE; BTNFECHAR.Enabled:= TRUE; END ELSE TBLORCAMENTOS.Cancel; TABELALOJA.SQL.CLEAR; TABELALOJA.SQL.ADD('SELECT * FROM LOJAS'); TABELALOJA.ExecSQL; TABELALOJA.Open; while NOT TABELALOJA.Eof do BEGIN DBLOJA.Items.ADD(TABELALOJA.FIELDBYNAME('LOJA').ASSTRING); TABELALOJA.Next; END; FORMORCAMENTOS.FormActivate(SELF); TABELAORCAMENTOS.Close; TABELAORCAMENTOS.Open; DBOBSERVACOES.ReadOnly:= TRUE; end; anteriormente a esse codigo eu tenho o incluir que esta assim: PROCEDURE TFORMORCAMENTOS.BTNINCLUIRClick(Sender: TObject); begin TBLORCAMENTOS.OPEN; TABELAORCAMENTOS.SQL.CLEAR; TABELAORCAMENTOS.SQL.Add('SELECT * FROM ORCAMENTOS WHERE CODIGO IN (SELECT MAX(CODIGO)AS CODIGO FROM ORCAMENTOS)ORDER BY CODIGO DESC'); TBLORCAMENTOS.APPEND; TBLORCAMENTOS.ClearFields; DBCODIGO.TEXT :=INTtOSTR(TABELAORCAMENTOS.FIELDBYNAME('CODIGO').ASINTEGER + 1); DBDATA.TEXT:=DATA; FORMORCAMENTOS.FormActivate(SELF); WITH FORMORCAMENTOS DO BEGIN DBNUMERO.ENABLED:= TRUE; CAPTION:= 'INCLUSÃO DE REGISTRO' ; BTNEDITAR.ENABLED:= FALSE; BTNEXCLUIR.ENABLED:= FALSE; BTNINCLUIR.ENABLED:=FALSE; BTNFECHAR.ENABLED:= FALSE; DBOBSERVACOES.ReadOnly:= FALSE; END; DBNUMERO.SetFocus; LABELDOCUMENTOPAGO.Visible:= FALSE; DBPRONTO.CHECKED:= FALSE; DBPAGO1.CHECKED:=FALSE; DBPAGO2.CHECKED:=FALSE; DBPAGO3.CHECKED:=FALSE; TABELAITENSORCAMENTO.SQL.CLEAR; TABELAITENSORCAMENTO.SQL.ADD('SELECT * FROM ITENSORCAMENTO WHERE CODIGOREF =:CODIGOREF ORDER BY CODIGOITENS ASC'); TABELAITENSORCAMENTO.ParamByName('CODIGOREF').ASSTRING:= DBNUMERO.TEXT; TABELAITENSORCAMENTO.EXECSQL; TABELAITENSORCAMENTO.OPEN; ORCEXCLUSAO:= DBNUMERO.TEXT; DBOBSERVACOES.Text:= TABELADATA.FieldByName('DATA').ASSTRING; end;
  21. obrigado, ms meu quick aqui é 4.0 nem adintaria....ms valeu
  22. douglas essa procedure pede eventhandled undeclared identifier. o que fazer?
×
×
  • Criar Novo...