Renanbg 1 Denunciar post Postado Junho 8, 2007 Montei uma pequena agenda conforme mostra a imagem Esta tudo ligado a uma table e um datasource no datamodule Para fazer a consulta coloquei uma query e uma datasource no form e, Então se eu clicar nas letras de A-Z é executada a seguinte SQL DBGrid1.DataSource:=DataSource1; query1.close; query1.sql.clear; query1.sql.text:= 'Select * from TBCADASTRO where Nome LIKE "A%" order by Nome'; query1.open; Funciona bem, mas se eu quiser editar um registro dessa consulta eu não consigo... Tem outra forma de fazer essa consulta para que eu possa editar os resultados? Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 9, 2007 mais pq naum consegue editar ??? Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 9, 2007 É que o grid esta ligado ao datasource do datamodule e para fazer a pesquisa eu tive que ligar ele a um outro datasource e uma query pq senão ele não fazia a busca na tela... Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 9, 2007 perai...você tm um datamodule certo?nele você tm 2 dts e 2 qry ...um dts esta ligado com o grid e outro esta ligado com o navigator ?pq isso?particularmente lhe aconselharia a usar uma qry so, pq evita grandes trabalhos posteriores ...ambas as qry filtram dados de uma msm tabela naum é? entao qdo você da um post pela qry1 precisa da um close e open da qry2 tbm ... pra ela pegar novamente os dados da tabela ... Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 No DataModule tenho 1 table e um datasourcegravo e edito os dados com eles...No form da imagem acima tenho uma query e um datasource pois se eu apenas ligasse a query ao datasource do datamodule a busca não ocorria. Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 11, 2007 pode sim ... é so fazer assim : coloca o data module nas uses do form q tm o grid, e seta o data source do grid com o dts da adotable: ADOTable.Locate('ID_CONTATO', txtConsulta.text,[]); mais particularmente eu mudaria isso, colocaria no datamodule apenas um qry e um dts ligado ao msm... dai faria tanto consulta qto insercao ou edicao atraves da qry... edicao = qry.Edit;new = qry.Append; Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 Coloquei uma query no lugar da table, mas agora (no form onde tenho os dbedits que estavam ligados ao datasource ) a conexao com os campos se perdeu... EX: Seleciono um DBedit, ai seleciono a propriedade datasouce e escolho o datasouce que esta lá ligado a query, mas no datafield não aparece o campo para eu selecionar Agora consegui, só que da o erro abaixo ao tentar inserir um novo registro e a query tbm n reconhece os meus comandos de busca Codigo da busca ...da o erro no indexfieldnames if radiobutton1.Checked=true thenfrmdm.tbcadastro.[b]indexfieldnames[/b]:='Nome'Codigo da inserção frmdm.querycadastro.append;Application.CreateForm(Tfrmedcadastro, frmedcadastro);frmedcadastro.showmodal; Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 11, 2007 da um duplo click na sua qry ... vai clika com o botao direito do mouse em adiciona os fields .. pra consultar registro no DB faz assim: with DataModule.qry dobegin Close; SQL.Clear; SQL.Add('SELECT * FROM TABELA'); SQL.Add('WHERE CAMPO LIKE' + QuotedStr('%' + txtConsulta.text + '%')); Open;end; pra efetuar insercao faz assim: frmedcadastro:= Tfrmedcadastro.Create(Application);if (frmdm.querycadastro.Active = false) thenbegin frmdm.querycadastro.Active:= True;end;frmdm.querycadastro.append; frmedcadastro.showmodal; Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 da um duplo click na sua qry ... vai clika com o botao direito do mouse em adiciona os fields ..fiz isso, mas antes tive q colocar na SQL select * from tbcadastroativer ela e ai sim veio os campos..mas agora fiquei com os problemas q citei acima Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 Tentei usar o seu codigo para a inserção e ocorre o mesmo erro Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 11, 2007 nesse caso algum de seus objetos (table) esta somente para leitura....você esta usando os camponentes da palheta (ADO) msm ? Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 11, 2007 se estiver usando objetos da paleta BDE, coloque um TUpdateSQL e configure-o! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 nesse caso algum de seus objetos (table) esta somente para leitura....você esta usando os camponentes da palheta (ADO) msm ?uso da paleta BDEse estiver usando objetos da paleta BDE, coloque um TUpdateSQL e configure-o! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gifNunca usei esse componente, mas vou tentar mecher aquiEdit: pelo que vi tem q colocar a programação do botão alterar, excluir e inserir ali dentro desse componente? Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Junho 11, 2007 mais é estranho estar dando esse erro, se naum existir nenhum objeto setado como read only ...faz um teste ... vai no form q tm sua grid e adiciona um ADOQuery e um DataSource... ligue o ADOQuery com sua Connection .... e no faz a rotina q t passei antes ... Compartilhar este post Link para o post Compartilhar em outros sites
Hugo Slepicka 0 Denunciar post Postado Junho 11, 2007 Não, no caso você aponta para qual Tabela ele vai editar, depois clica em Generate SQL e ele lhe faz as instruções automaticamente, PS.: Não se esqueça de colocar na query a propriedade UpdateObject como o que você criou anteriormente... e é só isso... qq dúvida posta aew. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 11, 2007 Não to tendo sucesso, vou deixar como está e pronto....hehheheFunciona da mesma formaAbraço... Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 12, 2007 Fiz um novo projeto, e liguei em outra tabela, mas o erro ocorre, em anexo o exemplo Use o alias: alagenda http://www.zshare.net/download/2241391637313b/ Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Coloque a propriedade RequestLive como True, vai permitir editar e inserir sem problemas. Compartilhar este post Link para o post Compartilhar em outros sites
Renanbg 1 Denunciar post Postado Junho 12, 2007 Coloque a propriedade RequestLive como True, vai permitir editar e inserir sem problemas.Opa...funcionou. obrigado...você tem me ajudado muito... Agora como vou trocar Table por Query tenho mais um problema na busca, Se você olhar a imagem no topo vera que faço a busca de tres formas nos radiobutton codigo do radiobutton if radiobutton1.Checked=true thenfrmdm.tbcadastro.indexfieldnames:='Nome'elseif radiobutton2.Checked=true thenfrmdm.tbcadastro.indexfieldnames:='Endereco'elseif radiobutton3.Checked=true thenfrmdm.tbcadastro.indexfieldnames:='Cidade';edit1.setfocus;edit1.clear;e codigo do edit procedure Tfrmprincipal.Edit1Change(Sender: TObject);VarMensagem : String;beginif Edit1.Text <> '' thenbegintryif Radiobutton1.Checked=true thenfrmdm.tbcadastro.Locate('Nome',Edit1.Text,[lopartialkey])elseif Radiobutton2.Checked=true thenfrmdm.tbcadastro.Locate('Endereco',Edit1.Text,[lopartialkey])elseif Radiobutton3.Checked=true thenfrmdm.tbcadastro.Locate('Cidade',Edit1.Text,[lopartialkey]);exceptMensagem := 'Consulta muito longa, digite menos caracteres.';if Application.MessageBox(PCHAR(Mensagem), 'Agenda de Telefones', MB_ICONINFORMATION + MB_OK)=MROK thenEdit1.clear;edit1.SetFocus;end;end;Só que com a query o comando indexfieldnames não é reconhecido como posso fazer? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 12, 2007 Opa... Bom que funcionou... :DCom a query, você precisa usar o comando ORDER BY, e mandar ordenar pelo campo desejado da tabela... select *from tabela order by tabela.campo Compartilhar este post Link para o post Compartilhar em outros sites