Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. TClientDataSet(Ds.DataSet).Post; O comando Post é usado para escrever ( salvar ) um registro modificado no banco de dados. TClientDataSet(Ds.DataSet).ApplyUpdates(-1); Envia todos os updates ( registros ) atualizados, inseridos e deletados do dataset cliente para o provedor para atualizar ao banco de dados. Porque o -1 ? Veja a função: function ApplyUpdates(MaxErrors: Integer); Integer; virtual; o -1 é o numero colocado para o numero maximo de erros, é usado para ignorar os erros e continuar sem parar a execução do programa ... entretanto existem outros procedimentos para tratar esses erros. quando voce tem um campo autoincremento e dá o comando insert, automaticamente o campo usado como autoincremento recebe o proximo numero da lista, então neste caso não é necessario voce atribuir qualquer valor a ele .... se fizer isso ele não grava valor nenhum, o que é feito pelo post e o applyupdates. abraço
  2. exemplo usando o ZTable: procedure TForm1.Button1Click(Sender: TObject); begin // o campo da tabela deve estar indexado ZTable1.IndexFieldNames := 'EMPRESA'; end; se voce for usar o onTitleClick do DBgrid já é um pouco diferente, e o ideal seria usar o ZQuery abraço
  3. procedure TfrmModelo.ac_salvarExecute(Sender: TObject); begin TClientDataSet(Ds.DataSet).Post; TClientDataSet(Ds.DataSet).ApplyUpdates(-1); Pagecontrol1.ActivePage := tbConsulta; end; O problema não é quando voce salva, mas quando da o insert abraço
  4. Tente usar o DBControlGrid abraço
  5. Que componentes voce esta usando para acessar a tabela ?
  6. Voce esta usando um DataModule, neste caso se o ClientDataSet2 não estiver apontado para o mesmo banco de dados, ocorre o erro de EAccessViolation. se forem arquivos independentes, então não use o DataModule abraço
  7. Sim ... terá que utilizar o Action List no Form Modelo. O Action Manager não suporta heranca. abraço
  8. Seria mais facil te dar uma resposta se voce colocasse o seu código abraço
  9. Nem vai achar .. não é um componente uses Clipbrd; procedure TForm1.Button1Click(Sender: TObject); begin if (ssCtrl in Shift) and (Key=Ord('C')) then begin Clipboard.AsText := trim(lowercase('(memo)')); Clipboard.AsText := ADOTable1.FieldByName('qualificacao').AsString; end; end; abraço
  10. Seria a mesma coisa procedure TFrm_Principal.Button1Click(Sender: TObject); var St: string; i : integer; begin DataModule1.ClientDataSet1.Open; DataModule1.ClientDataSet1.First; for i := 1 to DataModule1.ClientDataSet1.RecordCount do begin St:= DataModule1.ClientDataSet1.FieldValues['Tamanho']; ShowMessage(St); DataModule1.ClientDataSet1.Next; end; end; abraço
  11. agora entendi .... voce já tem essa tabela com esses 2 campos e que os mesmos contem os valores que voce precisa visualizar acho que voce pode usar um CheckListBox ou um StringGrid ou ainda um ListView para isso No caso do CheckListBox ... na propriedade Itens voce joga o conteudo titulo e usa a caixa de checagem para mostrar o texto do memorando ( ou seja, quando voce clicar no item ele mostra o texto do memorando ) não esqueça a propriedade Columns No caso do StringGrid, crie tantas colunas quanto forem necessarias ( via código ) e um numero de linhas fixas ou variaveis ( rolagem da tela ) para mostrar o conteudo do titulo , e ao clicar em cada celula voce mostra o conteudo do Memo O Listview segue o mesmo raciocinio .... mas ainda existem outras maneiras abraço
  12. voce terá que ler a linha do texto e usar função copy para retirar os trechos nas posições especificadas e passar o conteudo para um campo de sua tabela exemplo: Table1NOME.AsString := (Copy(LINE, 1, 30)); Table1ENDER.AsString := (Copy(LINE, 32, 50)); Table1CIDADE.AsString := (Copy(LINE, 73, 30)); Onde LINE seria a variavel usada para ler cada linha do arquivo texto abraço
  13. Não é o mesmo raciocinio, porque no evento OnShow o código será executado apenas uma unica vez e no evento OnActive o código será executado sempre que o Form for ativado abraço
  14. Certo: Ds.DataSet.Filter := cbxField.Text+' like '+QuotedStr(EdtValor.Text+'%'); Errado: Ds.DataSet.Filter := cbxfield.Text 'like' QuotedStr(Edtvalor.Text '%'); porque usar o + ??? justamente para ajuntar uma string com outra para não dar erro na compilação Suas dúvidas são básicas ... voce deveria ler mais sobre o delphi abraço
  15. exatamente ... dependendo de onde voce coloque o % ele procura a primeira ocorrencia ou a ultima dentro de uma string abraço
  16. Faça uma pesquisa no forum pela palavra Processos http://scriptbrasil.com.br/forum/index.php...hlite=processos abraço
  17. O operador LIKE que exibe dados baseados em uma seqüência de caracteres. O operador LIKE utiliza um coringa % para representarmos qualquer numero de caracter. exemplo: Select * from Empregado Where NOME LIKE '%CIA%' Order by NOME O resultado seria: abraço
  18. voce não pode colocar um código para executar antes que o Form tenha sido criado, então o correto seria colocar o código no evento OnActive do Form, para que sempre que o Form for ativado ( ou seja receber o foco ) o codigo seja executado. abraço
  19. experimente colocar este código dentro de um botão e veja o que acontece abraço
  20. coloque algumas linha do seu campo texto, para dar uma idéia do que esta querendo
  21. O erro está no seu código .... mas qual é a finalidade de colocar o nome dos campos da sua tabela dentro de um combobox ?
  22. Veja este post http://scriptbrasil.com.br/forum/index.php...st&p=498006 abraço
  23. voce pode usar o FindNext Implements a virtual method for positioning the cursor to the next record in a filtered dataset. function FindNext: Boolean; Description This function returns False, indicating that the cursor was not successfully repositioned. Descendant classes override FindNext to position the cursor to the next record of the dataset, honoring any filters that are in effect. FindNext should return True if the cursor is successfully repositioned. exemplo: procedure TForm1.Button1Click(Sender: TObject); var sr: TSearchRec; FileAttrs: Integer; begin StringGrid1.RowCount := 1; if CheckBox1.Checked then FileAttrs := faReadOnly else FileAttrs := 0; if CheckBox2.Checked then FileAttrs := FileAttrs + faHidden; if CheckBox3.Checked then FileAttrs := FileAttrs + faSysFile; if CheckBox4.Checked then FileAttrs := FileAttrs + faVolumeID; if CheckBox5.Checked then FileAttrs := FileAttrs + faDirectory; if CheckBox6.Checked then FileAttrs := FileAttrs + faArchive; if CheckBox7.Checked then FileAttrs := FileAttrs + faAnyFile; if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then begin with StringGrid1 do begin if (sr.Attr and FileAttrs) = sr.Attr then begin Cells[1,RowCount-1] := sr.Name; Cells[2,RowCount-1] := IntToStr(sr.Size); end; while FindNext(sr) = 0 do begin if (sr.Attr and FileAttrs) = sr.Attr then begin RowCount := RowCount + 1; Cells[1, RowCount-1] := sr.Name; Cells[2, RowCount-1] := IntToStr(sr.Size); end; end; FindClose(sr); end; end; end; outra solução: Um botão para pesquisar com o código ClientDataSet.FindKey([EditBusca.Text]); E outro botão procurar o proximo ClientDataSet.FindNext; outra solução: uses IBCustomDataSet; Código: TIBCustomDataSet(Datasource.dataset).LocateNext('','',[]); outra solução: DM.qrProduPesq.Close; DM.qrProduPesq.SQL.Clear; DM.qrProduPesq.SQL.Add('SELECT nome, codigo FROM PRODU WHERE UPPER(nome) LIKE ' + #39 + '%' + Edit1.Text + '%' + #39); DM.qrProduPesq.Open; usando Like na sentença sql voce traz somente os registros que satisfaçam as condições abraço
  24. O erro direciona voce para a parte do código onde se encontra o Form com o erro No seu caso o erro esta no: Application.CreateForm(TfrmPrincipal, frmPrincipal); procure no código onde deveria ser colocado um ponto final e voce colocou um parenteses abraço
  25. sim ... mas lembre que após cada next, voce deve testar o inicio do proximo registro para saber que chegou ao fim a pesquisa ALBERTO ARMANDO ALDEMIR ----------- // a pesquisa deve encerrar aqui BRUNO BRENO se não estiver ordenado, o ponteiro do locate irá para sempre no primeiro registro da ocorrencia abraço
×
×
  • Criar Novo...