Ir para conteúdo
Fórum Script Brasil

William - TI

Membros
  • Total de itens

    133
  • Registro em

  • Última visita

Tudo que William - TI postou

  1. Caro amigo para apenas marcar no sistema como não logado. é simples usando o exemplo que te dei em cima id |data---------|Maquina-- |hora -----| status |Usuario 1 |10/06/2009 | Servidor--| 12:00:00| 1 -----|William 2 |10/06/2009 | est001 ---| 13:00:00 | 1 ------|William 3 |10/06/2009 | est002 ---| 14:00:00 | 1 ------|William 4 |10/06/2009 | Servidor--| 15:00:00| 0 ------|William no select vai aprarecer que esta logado correto 4 |10/06/2009 | Servidor--| 15:00:00| 0 ------|William ai é só você verificar se hora atual é maior que hora da tabela + 00:05:00 caso for de um update tabela set status=1 where status =0 e logar no sistema caso contrario de a menssagem "você esta logado na maquia tal". para isso é só. agora em questão de segurança como nosso amigo churc sitou, para resolver em partes basta você nunca pegar a hora do micro local e sim do servidor como uso mysql eu pego a hora do mysql, pois usuarios normais geralmente não tem acesso ao servidor, isto deve resolver. qualquer coisa posta ai.
  2. amigo é so você no mysql na sua tabela colocar o compo codigo como integer, auto increment, not null, primary já deve resolver seu problema.
  3. Isto é bem simples, vou te dar um exempolo em mysql e delphi que é o que estou mais abtuado tabela id |data |Maquina |hora | status |Usuario 1 |10/06/2009 | Servidor| 12:00:00 | 1 |William 2 |10/06/2009 | est001 | 13:00:00 | 1 |William 3 |10/06/2009 | est002 | 14:00:00 | 1 |William 4 |10/06/2009 | Servidor| 15:00:00 | 0 |William o que eu faço na hora de entrar no sistema eu pesquisao apnas se a registro no mesmo dia com status 0 para o meu usuario assim Select * from TABELA where data="10/06/2006" and usuario="william" ans status=0 este select me me retornara apenas o que esta em aperto id |data |Maquina |hora | status |Usuario 4 |10/06/2009 | Servidor| 15:00:00 | 0 |William então saberei que no servidor estou logado no meu nome. caso não retorne nada não estou logado em lugar nem um. qualquer coisa posta ai.
  4. Isto vai do que você quiser fazer se voce criar uma tabela como sugeri você automaticamente terá um log de acesso. caso queira usar a propia tabela de usuario funcionará perfeitamente tb, você só não terá o log de acesso, mais sem problemas. até mais abraço.
  5. via codigo eu não sei mais se ele tiver ficando por traz ecomo você fez não funcionou basta você recortar e colar o msmo vicará sobreposto ao outro componente.
  6. Amigo para pegar o nome local da maqui é esta funcão abaixo function NomeComputador : String; var lpBuffer : PChar; nSize : DWord; const Buff_Size = MAX_COMPUTERNAME_LENGTH + 1; begin nSize := Buff_Size; lpBuffer := StrAlloc(Buff_Size); GetComputerName(lpBuffer,nSize); Result := tiramascara(String(lpBuffer)); StrDispose(lpBuffer); end; agora para fazer oque você esta querendo o ideal é criar uma tabela acesso_sistema. quando o usuario logar você salva nesta tabela a data hora minuto segundo que ele logou o nome da maquina e o nome ou codigo do usuario esta tabela deverá conter o campo status onde 0 será logado e 1 será não logado, ao fechar o sistema você deve muda o status do registro para 1. toda vez que o usuario tentar acessar o sistema você faz uma busca na base de dados pegando o dia atual e verificando se tem status 0 se tiver é so mostrar a menssagem você esta logado na maqina TAL. imagino que isso resolva seu problema. qualquer duvida estamos aqui para te ajudar.
  7. caso não tenha campos na query apenas nas pesquisa faça assim no onAfterOpen da query digite o codigo TNumericField(QUERY.FieldByName('CAMPO')).DisplayFormat:='###,###,##0.00'; assim tb funciona.
  8. Amigo vamos lá como os nossos dois colegas falaram quando se da um append o registro vai para um novo correto e zera todos os valores, execto o da variavel pois esta armazenado, o problema se você entrar no campo e sair dele ele irá zerar a varialvel ao invés de atualizar temta este codigo que postei abaixo e ve se resolve. primeiramente crie a variavel como global ao invés de ser encapsulada. procure no .pas e acrescente = abaixo. var FMVendas : TFMVendas; conta:integer; valor:real; Depois no on actvate do form ou quando iniciar uma nova venda coloque assim procedure FMVendas.FormActivate(Sender: TObject); begin conta :=0; valor :=0l; end; e agora no onexit do DBEdit5Exit coloque assim procedure TFMVendas.DBEdit5Exit(Sender: TObject); begin dmvendas.SimpleDataSetvendas.FieldByName('data_vnd').AsDateTime:= (datetimepicker1.DateTime); dmvendas.SimpleDataSetitens.FieldByName('data_itens').AsDateTime:= (datetimepicker1.DateTime); dmvendas.SimpleDataSetItens.FieldByName('adicional').AsString:= dmvendas.SimpleDataSetItens.FieldByName('nomeproduto').AsString; conta:= conta + dmvendas.SimpleDataSetitens.fieldByname('codigo_itens').asinteger + 1; //o + 1 que esta ai em cima imagino que não precisa mais deixei pois já estava no seu codigo dmvendas.SimpleDataSetitens.FieldByName('codigo_pro').AsFloat:= dmvendas.SimpleDataSetitens.FieldByName('codigoproduto').AsFloat; dmvendas.SimpleDataSetitens.FieldByName('valor_pro').Asfloat:= dmvendas.SimpleDataSetitens.FieldByName('valorproduto').Asfloat * dmvendas.SimpleDataSetitens.FieldByName('qtda_itens').Asfloat; valor:= valor + dmvendas.SimpleDataSetItens.fieldbyname('valor_pro').asfloat; dmvendas.SimpleDataSetitens.Append; dmvendas.SimpleDataSetitens.fieldByname('codigo_itens').asfloat:= conta; dmvendas.SimpleDataSetitens.FieldByName('totalvendas').Asfloat:= dmvendas.SimpleDataSetitens.FieldByName('totalvendas').Asfloat + valor; dbedit4.SetFocus; end; imagino que agora resolva mais qualquer coisa posta ai que estaremos aqi para te ajudar.
  9. Daniel muito obrigado, testei a função e deu certinho como precisava. valeu. problema resolvido.
  10. Boa tarde Mais uma vez estou presisando da ajuda de vocês. agora preciso converter time em float ex. tenho o totais de horas trabalhadas. 09:00:00 09:00:00 09:00:00 09:00:00 08:00:00 ________ 44:00:00 porem quando somo normal com o tipo timer ele me da um total de 20:00:00 ao invés de 44:00:00 alguém tem ideia de como faz a soma de horas podendo ultrapasar a 24h ou converter time em float? mais uma vez grato pela atenção.
  11. Amigo pior que não tem. agradeço a atenção. tb estou buscando alternativa caso ache posto aqui.
  12. Caros amigo ainda não consegui. aqui vai minha duvida. como uso Zeues auterei o codigo assim. procedure OrdenaDataSetGrid( var CDS: TZMySqlQuery; Column: TColumn; var dbgPrin: TDBGrid); auterei de TClientDataSet; para TZMySqlQuery; porem me da um erro nesta parte if bolUsed then CDS.DeleteIndex(Column.Field.FieldName); (Aqui da erro) try CDS.AddIndex(Column.Field.FieldName, Column.Field.FieldName,idOptions, '', '', 0); (aqui da erro) strColumn := Column.Field.FieldName; imagino que o erro esta por na query não deve exixtir DeleteIndex e nem AddIndex gostaria de saber por qual eu substituo. mais uma vez grato pela atenção.
  13. Amigo estou tendo uma certa dificuldade para usar o codigo pois uso o componente Zeus, componente query. você tem exemplo para para o query do zeus? muito grato pela resposta.
  14. Bom dia. E ai galera mais uma vez estou aqui com um problema, preciso indexar de orden inversa ao clicar no titulo do Grid. so que não quero usar a pesquisa com order by campo desc ordenar normal eu consigo fazendo assim no ontitleclick do dbgrid. qryQuery.IndexFieldNames:= dbgrid1.Columns[Column.index].FieldName; agora inverso não faço nem ideia de como fazer. mais uma vez grato pela atenção.
  15. estou passando para avisar que já esta certo. Consegui fazer. seria + ou - assim select * from tabela order by idade, nome
  16. Caros amigos preciso fazer um select que nele preciso agrupor por dois criterios tabela: codigo nome idade 1 aaaa 12 2 bbbb 11 3 aaaa 11 pra entender preciso de um select que organize por idade e depos por ordem alfabética. teria de ficar assim. codigo nome idade 3 aaaa 11 2 bbbb 11 1 aaaa 12 só que não consigo fazer por nada neste mundo. Postei aqui por que não achei tópico relacionado ao mysql mais uma vez grato pela atenção.
  17. Amigão é isso mesmo problema resolvido muito obrigado.
  18. Amigo estive dando uma olhada já tive esta duvida o que resolvel para o meu sistema foi espalhar este codigo pelas linhas de codigos Application.ProcessMessages; tipo : while not query1.eof do begin //funcoes.. query1.next; Application.ProcessMessages; end; isto deve resolver seu problema.
  19. Caros amigos, mais uma vez estou presisando da ajuda de vocês. fiz um mini navegador porém gostaria de saber se tem como imprimir na impressora o que esta no webbrowser. grato pela atenção... abraços.
  20. Muito obrigado amigo espalhei pelo processo o Application.ProcessMessages; e tudo resolvido muito obrigado mesmo... falow abraços
  21. Boa tarde. mais uma vez preciso da ajuda de vocês. fiz um processo muito longo, porém quando o sistema esta executando este precesso da impressã que tava, tipo congela a tela fica branco... só que o sistemacontinua percorrendo normalmente, tem algum comando que espalho no processo para não congelar a tela? mais uma vez grato pela ajuda.
  22. Caros amigos não sei se o correto seria postar aqui porém não achei outro tópico relacionado, meu mysql esta criando 3 databases sozinho já procurei pelo nome das database porem não achei nada a respeito o nome delas são: Fd545720 Fd652056 Fd587555 elas não atrapalha em nada e tb não tem nada dentro (tabelas nada) porém se eu excluilas e dar reflesh elas voltam sozinhas alguém tem ideia do que é?
  23. Boa tarde amigo o ideal neste caso é você ir pesquisando e inserindo em uma tabela temporaria depois só dar um select * from temporario e mostrar no grid. pois da maneira que você esta fazendo você pesquisa e depois pesquisa outra coisa na mesma query ai só irá mostrar o último mesmo. caso você ainda não sabe como criar temporario e inserir dados ne posta ai que nos te ajudamos .. abraços
  24. Caro amigo Boa tarde não sei se entendi direito mais vamos la. para saber data de 3 meses atras é so fazer assim label1.caption :=FormatDateTime('dd-mm-yyyy',date - 90); 6meses label1.caption :=FormatDateTime('dd-mm-yyyy',date - 180); agora para obter a media depende da consulta que você vai fazer dos valores. por exemplo você teve 10 vendas qeu totalizaram 10.000,00 basta dividir 10.000,00 por 10 que data a media de 1.000,00 para entender so dividir o valor pela quantidade de vendas.. caso alguma coisa não ficou claro posta ai.. abraços.
×
×
  • Criar Novo...