Ir para conteúdo
Fórum Script Brasil

pimpocvl007

Membros
  • Total de itens

    45
  • Registro em

  • Última visita

Tudo que pimpocvl007 postou

  1. Ola Se você tiver uma conta do gmail pode ver a imagem da tela: https://docs.google.com/open?id=0B8krEpUBy7...zg2YmUzZTViMGQw Suponho que você viu a imagem, então a ideia seria, o usuário pode alterar qualquer dado do grid, quando clicar no botão salvar o sistema devera gravar todas as alterações no banco, dos diversos registros alterados. O problema que estou enfrentando e que ao salvar o sistema só grava o ultimo registro editado, ao sair da tela e entrar novamente da impressão que todas as alterações foram gravadas, mas ao sair do aplicativo e voltar nesta tela ai percebo que somente o ultimo registro editado que foi gravado. detalhe, ele só grava o ultimo se eu estiver em cima, ou seja, se eu editar o primeiro registro, ir na linha de baixo e salvar, ele não grava no banco, se eu editar o primeiro registro, ir para o segundo, alterar o segundo e salvar ele grava os dois agora se eu alterar o primeiro, ir para o segundo, alterar o segundo, voltar para o primeiro e salvar, ele não grava nada. Ao utilizar o ".ApplyUpdates(-1);" da erro: [DCC Error] unit_CadastroLocalEmpresa.pas(360): E2034 Too many actual parameters [DCC Fatal Error] cloudvel_sbss.dpr(29): F2063 Could not compile used unit 'unit_CadastroLocalEmpresa.pas' Failed Elapsed time: 00:00:02.4 Poxa, tem mais, isso que estou comentando agora e em cima do TIBTable, se utilizo o TIBdataset piora, pois ao passar com tab nos campos alterado ele grava na hora, queria que a gravação ocorre-se somente quando o usuário clica-se no botão salvar. obs.: não estou utilizando o navegador.
  2. Galera, Consegui resolver meu problema em partes, mas agora preciso aprender outra coisa. Hoje quando o usuário altera os dados da tabela diretamente no GRID e passa com TAB, esta alteração e gravada no banco, acredito que isto seja um processo próprio do grid pois não fiz nenhuma configuração extra para isso, eu quero configurar para gravar somente quando o usuário clicar no botão salvar, e possível?
  3. Achei a solução para gravar os dados do usuário (usuário, data e hora da atualização quando o mesmo utilizar a seta para baixo ou para cima). Peguei o IBDataset fui no "evento" do "componente": beforepost (antes de postar) mandei incluir o usuário a data e a hora, exemplo: Ao pressionar a seta para baixo ou para cima o sistema executa o BEFOREPOST desde que ouve alteração na tabela, fazendo isso: tabela_dados_parametro_empresaATU_CDUSU.Text := CdUsuarioLogado; tabela_dados_parametro_empresaATU_DT.Text := DataServidor; tabela_dados_parametro_empresaATU_HR.Text := HoraServidor; ...depois disso salvo automaticamente como já vinha fazendo;
  4. Boa noite, Tenho um grid que permite o usuário alterar os dados da tabela, ele esta ligado através de um dataset (paleta INTERBASE), quero configurar para que a gravação dos dados alterados pelo usuário no grid, seja efetivada somente quando ele clicar no botão SALVAR. Hoje o sistema grava os dados quando o usuário altera no grid e da um TAB, pelo que percebi este procedimento e padrão do delphi pois não fiz nenhum configuração "extra" para ele trabalhar desta forma, ou seja, somente fiz as ligações dos componentes grid+dataset. Outra coisa que percebi e esta deixando eu com a pulga atras da orelha, quando o usuário altera um valor no grid e passar com TAB, o sistema grava as informações do usuário que alterou, data, e hora, mas, se o usuário altera o mesmo campo e passa com setinha para baixo ou para cima que e o meu caso, o sistema grava a alteração que ele fez no campo mas não atualiza o usuário, data e hora. Porque será?
  5. var num : string; num1 : integer num := '1'; num1 := num; // aqui ocorrerá erro de conversão num1 := strtoint(num); // aqui está correta a conversão de tipo ...então Jhonas, para testar eu criei uma tabela simples que recebera a importação, (tabela = teste, sendo os campos: "cd_cliente = integer" e "nm_cliente = string(60)"), os dados que exportei de outra tabela seguem este mesmo raciocínio, inclusive o nome e tipo, mesmo assim deu erro. Este exemplo de conversão que você deu já e familiar para mim, mas no caso dentro de um SQL não, você quer dizer que eu terei que utilizar variáveis dentro do SQL para representar os campos? isso? obs.: naquele primeiro link que postei tem um "programinha" de exemplo para baixar, testei com ele e também da erro. Obrigado Olimpio
  6. Bom dia Sandrelle. 1 - Tenho um form de localizar registro... faço a pesquisa, encontro o resultado, mas não sei como jogar o resultado na outra tela. Isso na tabela que sei que tem apenas (uma) informação com este nome. R. Eu utilizo os componente do "interbase", (tibquery, tibdataset). Digamos que você tem o Form1 o qual deve receber os dados do Form2 "pesquisa". Digamos que o resultado apresentado no Form2 e mostrado num "Grid", quando você der Dois cliques no registro listado no "grid" o sistema deve pegar o valor da coluna "zero" (primeira coluna do grid) deste registro e jogalo para o "campo" do Form1, localizar o registro selecionado no Form1 e fechar o Form2. [Form2] //Este código pega o valor do registro selecionado da primeira coluna do grid e joga no campo (edit1.text) do Form1, executa o processo para localizar o registro no Form1 e fecha o Form2. //No evento "dois cliques" do grid você insere: Form1.edit1.text := grid1.fiels[0].text; Form1.LocalizaCadastroCliente; Close; [Form1] //Tenho um processo (procedure) para localizar o registro desejado no Form1, digamos que o nome deste processo é: "LocalizaCadastroCliente" sua estrutura seria: begin tibdataset.close; tibdataset.slq.clear; tibdataset.slq.add('select * from TABELACLIENTE where NM_CLIENTE = '+quotedstr(edit1.text)+''); tibdataset.open; end; 2 - Em uma outra tabela, outro form de localizar , a pesquisa deve ser feita com base no parametro escolhido pelo usuario pode ser o nome, o setor ou a data e nesse caso terá mais de um resultado. Gostaria de quando encontrado aparecessem em um DBGrid e ao selecionar o registro fosse jogado na outra tela para ser exibido completo. Tem como isso ser feito? R. Sim, o mesmo método utilizado acima serve para este caso. A sua duvida e somente com relação a transportar o resultado de um form para outro ou também em como realizar a pesquisa com mais de um parâmetro?
  7. Boa noite, Utilizei o código abaixo para EXPORTAR os dados da minha tabela, funcionou perfeitamente. O problema esta no código de importação que da este erro: [E-R-R-O] Project 1 Dynamic SQL Error SQL error code = -303 conversion error from string "1" [E-X-P-O-R-T-A-R] var Delimitador: TIBOutputDelimitedFile; begin IBSQL1.SQL.Text := 'select CUST_NO, CUSTOMER, CITY from CUSTOMER'; Delimitador := TIBOutputDelimitedFile.Create; try Delimitador.Filename := 'C:\export_delim.exp'; IBSQL1.BatchOutput(Delimitador); finally Delimitador.Free; end; ShowMessage('Exportação realizada com sucesso'); end; [i-M-P-O-R-T-A-R] var Delimitador: TIBInputDelimitedFile; begin IBSQL1.SQL.Text := 'insert into CUSTOMER values (:CUST_NO, :CUSTOMER, :CITY)'; Delimitador := TIBInputDelimitedFile.Create; try Delimitador.Filename := Edit1.Text; IBSQL1.BatchInput(Delimitador); finally Delimitador.Free; end; ShowMessage('Importação realizada com sucesso'); end; obs.: http://www.devmedia.com.br/post-2040-Expor...do-fb---ib.html Como resolver?
  8. procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.SelectedIndex = 2 then DBGrid1.SelectedIndex := 0 end; ...bingo!!! Era exatamente o que precisava. Fica aqui registrado meu agradecimento ao [Prog'amador]. Valeu! Olimpio
  9. ...certo, confirma pra mim, neste caso o usuário tem acesso a clicar nesta coluna porem não tem acesso a manipular os dados, beleza, tem como eu capturar o clique nesta coluna e direcionar o foco para outra coluna, campo? Obrigado.
  10. Boa tarde, Hoje minha duvida esta relacionada ao DBGrid, tenho uma tabela que contem três campos, liguei ela no grid que formou 3 colunas, gostaria de configurar o grid para que o usuário manipula-se somente os dados da coluna 3, no caso, o usuário não pode ter acesso a coluna 1 e 2 (esta coluna teria que ficar inativada), verifiquei que não existe a propriedade ENABLE para as colunas. Posteriormente gostaria de verificar como faço para posicionar o cursor em determinada coluna (campo) da grid. Desde já agradeço a todos. Olimpio.
  11. Olá, ...desculpe a demora em responder. Então, agradeço pela ajuda Jhonas, através das suas dicas e algumas adaptações consegui adequar o código a minha necessidade. Até a próxima!!! Obrigado Olimpio
  12. if UserLevel < (MainMenu1.Items.Find('NomeItemMenu').Tag) then MainMenu1.Items.Find('NomeItemMenu').Enabled := False else MainMenu1.Items.Find('NomeItemMenu').Enabled:= True; Jhonas, Boa noite, Verifiquei que não e possível informar uma variável do tipo String no lugar do: 'NomeItemMenu', é possível fazer isso de alguma forma? ...eu tentei criar uma função da seguinte forma: function nomecomponente : String; begin Return := nm_componente; end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; teste : String; begin carregaComponenteUsuario; for i := 0 to queryConsultaBanco.RecordCount - 1 do if teste = '' then begin nm_componente := queryConsultaBancoNM_COMPONENTE.Text; menuPrincipal.Items[0].Items[0].Find(nomecomponente).Enabled := False; queryConsultaBanco.Next; end; ...então quando passa a primeira vez pelo FOR, funciona beleza, porem quando vai passar a segunda vez sendo que na variavel "nm_componente" já esta carregado outro nome de componente da este erro: Acces violation at address 0047AEDF in module 'Project1.exe' Read of address 00000039 ...ai não funcionou =). Obrigado Olimpio
  13. ...acho que me expressei errado, estava pensando em algo como: NomedoMeuMenu.Items[NomeItemMenu].Enabled := False else NomedoMeuMenu.Items[NomeItemMenu].Enabled:= True; ...em vez de utilizar o "i" passando um valor inteiro, utilizaria uma opção passando o o nome do item menu que seria string. Sei que a opção "Items" espera um valor Inteiro por isso não consigo utilizar, será que existe algum outro parâmetro que permita fazer a validação através de um nome (string)? obrigado Olimpio
  14. if UserLevel < MainMenu1.Items[i].Tag then MainMenu1.Items[i].Enabled := False else MainMenu1.Items[i].Enabled:= True; Jhonas, Tu teria idéia de como eu poderia liberar o menu através do nome que dei para ele na propriedade NAME do TMainMenu? Obrigado
  15. ...vou testar esse final de semana, depois comento o resultado. Obrigado.
  16. ...aqui eu faço assim: grid.Fields[0].text; ...o foco do cursor estando na linha 1 indiferente da coluna em que se encontra, vai pegar o valor da primeira coluna ( "0" ) da linha 1, caso o cursor esteja na linha 2 indiferente da coluna em que se encontra vai pegar o valor da primeira coluna da linha 2. falou!
  17. Boa noite, [DUVIDA] Como posso automatizar a liberação do MENU (TMainMenu, enable = True) quando o usuário tem acesso ao Form vinculado ao item do menu? (passando somente o nome do FORM). [APRESENTAÇÃO DO PROBLEMA] Na minha aplicacao o usuario acessa o sistema digitando USUÁRIO / SENHA / EMPRESA, os FORM's estão disponíveis através de um TMainMenu que inseri no Form Principal, exemplo da hierarquia do menu: ADMINISTRAÇÃO ADMINISTRAÇÃO / MANUTENÇÃO ADMINISTRAÇÃO / MANUTENÇÃO / 001 - Cadastro Usuário (chama o Form "Cadastro Usuário") ADMINISTRAÇÃO / MANUTENÇÃO / 002 - Cadastro Parâmetro (...mesma idéia citada acima) ADMINISTRAÇÃO / MANUTENÇÃO / 003 - Cadastro Formulário ADMINISTRAÇÃO / PROCESSO / 004 - Equivalência de usuário ADMINISTRAÇÃO / PROCESSO / 005 - Alteração Senha ...etc Tenho uma TABELA onde gravo os dados relevantes do Form, Nome, localização no MENU (TMainMenu), etc, tenho outra TABELA que gravo os Form's que o usuário tem acesso. Sei que posso fazer uma validação usando IF ou CASE, mas toda vez que criar um novo FORM terei que entrar no código fonte e incluir esse IF para o usuário ganhar acesso a esse componente (desde que tenha permissão), também sei que toda vez que criar um novo FORM terei que entrar no código fonte e criar o novo menu ou item de menu manualmente. ...mas, ...também sei que e possível automatizar este código para deixa-lo dinâmico mais inteligente, só que, não estou conseguindo fazer isso sozinho, não tenho conhecimento para desenvolver essa validação por isso recorro aos colegas, quem tiver uma sugestão será bem vinda.
  18. Ola, Resolvi dando DOIS CLIQUES no componente "TIBTransaction" e habilitei a opcao: READ COMMITTED. Jhonas Ao utilizar a sua dica deu erro: "transaction is actived" Voce acha que seria correto utilizar esta opcao READ COMMITTED? Obrigado Olimpio
  19. Boa noite Preciso da opiniao de voces. Tenho uma aplicacao desenvolvida em delphi: 10, banco: firebird 2.5 ligado atraves do componente: TIBDatabase (aba interbase), toda vez que a aplicacao e aberta, (on show) eu ativo o banco (TIBDatabase), ativo a transacao (TIBTransaction), quando o usuario acessa o Form referente ao cadastro de "clientes" eu ativo o TIBDataset, quando o usuario salva um novo registro um sql via TIBQUERY verifica o ultimo codigo de cliente cadastrado (max) soma mais um e gera um novo codigo para o cliente e o registro e salvo com sucesso, ocorre que... ...o usuario X acessa a aplicacao e vai na opcao (form) para criar um novo CLIENTE, o usuario Y tambem acessa ao mesmo tempo e tambem vai nesta opcao para criar outro cliente, o usuario X salva o registro e gera um novo codigo para este cliente, mas quando o usuario Y vai salvar o seu registro ele não recebeu a atualizacao que o usuario X fez e da erro. Estou pensando em em desativar o banco quando o usuario for salvar um novo registro, tipo, desativo, ativo (ele recebe os dados atualizados) e salvo. Ai pergunto, este seria o procedimento correto para resolver este impasse? Obrigado Olimpio
×
×
  • Criar Novo...