
pimpocvl007
Membros-
Total de itens
45 -
Registro em
-
Última visita
Tudo que pimpocvl007 postou
-
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.
-
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?
-
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;
-
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á?
-
(Resolvido) IBSQL1 - Exportar / Importar dados tabela
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
(Resolvido) IBSQL1 - Exportar / Importar dados tabela
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
Jhonas, boa noite. Como que converte? -
(Resolvido) Localizar Registro e Mostrar Resultados
pergunta respondeu ao Sandrelle de pimpocvl007 em Delphi, Kylix
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? -
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?
-
(Resolvido) - DBGrid - Bloquear determinada coluna, posicionar cursor
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
(Resolvido) - DBGrid - Bloquear determinada coluna, posicionar cursor
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
...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. -
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.
-
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
...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 -
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
(Resolvido) TMainMenu - Controle de acesso por usuario
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
...vou testar esse final de semana, depois comento o resultado. Obrigado. -
(Resolvido)Pegar valor de uma determinada célula e linha
pergunta respondeu ao robinhocne de pimpocvl007 em Delphi, Kylix
...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! -
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.
-
(Resolvido) Conexao com Banco de Dados - Adicionando novo registro
pergunta respondeu ao pimpocvl007 de pimpocvl007 em Delphi, Kylix
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 -
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