Olá pessoal sou novato em Delphi Fiz um curso recentemente e estou tentando desenvolver uma aplicação de cartão de Ponto com Delphi 2007 e BD MS Sql Server. Por enquanto estava indo tudo bem mas esses dias me deparei com um problema que não estou conseguindo resolver já pesquisei em diversoso foruns e não achei a solução vamos lá. Minha aplicação se conecta com o BD através de um AdoConection e faço consultas ao mesmo com o AdoDataSet. no Formulário de Cadastro de clientes possui uma busca por nome ou matricula (edit + Radiogroup) a busca por matricula tá funcionando ok! Mas por nome retorna a seguinte mensagem (CDSmpreg: Parameter 'NOME_EMPREG' not found.) Segue o código do Data Module e do Form. -------------------------------------------------------------------->DATAMODULE unit UdmPonto; interface uses SysUtils, Classes, DB, Provider, DBClient, ADODB; type TDataModule1 = class(TDataModule) ADOponto: TADOConnection; DTSempreg: TADODataSet; DSmpreg: TDataSource; CDSmpreg: TClientDataSet; DSPempreg: TDataSetProvider; AdoGeraChavePrimaria: TADODataSet; DspGeraChavePrimaria: TDataSetProvider; CDSGeraChavePrimaria: TClientDataSet; CDSmpregCOD_MATR: TIntegerField; CDSmpregMATR: TIntegerField; CDSmpregNOME_EMPREG: TStringField; CDSmpregSECAO: TStringField; DTSjustif: TADODataSet; DSjustif: TDataSource; CDSjustif: TClientDataSet; DSPjustif: TDataSetProvider; CDSjustifCOD_JUSTIF: TIntegerField; CDSjustifcod_MATR: TIntegerField; CDSjustifDT_INICIO: TDateTimeField; CDSjustifHORA_INICIO: TStringField; CDSjustifDT_FIM: TDateTimeField; CDSjustifHORA_FIM: TStringField; CDSjustifCOD_TIPOJUSTIF: TIntegerField; DTSmarcacao: TADODataSet; DSmarcacao: TDataSource; CDSmarcacao: TClientDataSet; DSPmarcacao: TDataSetProvider; CDSmarcacaoCOD_MARCACAO: TIntegerField; CDSmarcacaoMATR: TIntegerField; CDSmarcacaoDATAPTO: TDateTimeField; CDSmarcacaoHENTRA1: TStringField; CDSmarcacaoHSAIDA1: TStringField; CDSmarcacaoHENTRA2: TStringField; CDSmarcacaoHSAIDA2: TStringField; CDSmarcacaoHENTRA3: TStringField; CDSmarcacaoHSAIDA3: TStringField; CDSmarcacaoCOD_FOLHA: TIntegerField; CDSGeraChavePrimariaTABELA: TStringField; CDSGeraChavePrimariaCODIGO: TIntegerField; QryDia: TADODataSet; DspDia: TDataSetProvider; CdsDia: TClientDataSet; DtsDia: TDataSource; CdsDiaDATA: TDateTimeField; CdsDiaDIA_SEMANA: TStringField; CdsDiaCOD_EXTRA: TIntegerField; ADOQuery1: TADOQuery; ADOQuery1COD_MATR: TIntegerField; ADOQuery1MATR: TIntegerField; ADOQuery1NOME_EMPREG: TStringField; ADOQuery1SECAO: TStringField; private { Private declarations } public function GerarChavePrimaria(Tabela: string): integer; function PesquisarJustificacao(Cod_Matr: integer): boolean; function PesquisarMatriculaDoEmpregado (Matr: integer): boolean; function PesquisarNomeDoEmpregado (Nome_empreg: string): boolean; function PesquisarDataDoDia(Data: TDateTime): boolean; function PesquisarMatriculaMarcacao (Matr: integer): boolean; var ErroDoClientDataSet: string; end; var DataModule1: TDataModule1; implementation {$R *.dfm} function TDataModule1.GerarChavePrimaria(Tabela: string): integer; begin try repeat CdsGeraChavePrimaria.Close; CdsGeraChavePrimaria.Params[0].AsString := UpperCase(Tabela); CdsGeraChavePrimaria.Open; if CdsGeraChavePrimaria.IsEmpty then begin CdsGeraChavePrimaria.Append; CdsGeraChavePrimariaTABELA.AsString := Tabela; CdsGeraChavePrimariaCODIGO.AsFloat := 1; end else begin CdsGeraChavePrimaria.Edit; CdsGeraChavePrimariaCODIGO.AsFloat := CdsGeraChavePrimariaCODIGO.AsFloat + 1; end; CdsGeraChavePrimaria.Post; until CdsGeraChavePrimaria.ApplyUpdates(0) = 0; finally Result := CdsGeraChavePrimariaCODIGO.Value; CdsGeraChavePrimaria.Close; end; end; function TDataModule1.PesquisarDataDoDia(Data: TDateTime): boolean; begin with CDSdia do begin Close; Params[0].AsDateTime := StrToDateTime(DateToStr(Data)+' 00:00:00'); Params[1].AsDateTime := StrToDateTime(DateToStr(Data)+' 23:59:59'); Open; Result := not IsEmpty; end; end; function TDataModule1.PesquisarJustificacao(Cod_Matr: integer): boolean; begin with CDSjustif do begin close; Params[0].AsInteger := cod_Matr; Open; Result := not IsEmpty; end; end; function TDataModule1.PesquisarMatriculaDoEmpregado (Matr: integer): boolean; begin with CDSmpreg do begin close; Params[0].AsInteger := Matr; Open; Result := not IsEmpty; end; end; //function TDataModule1.PesquisarNomeDoEmpregado (Nome_empreg: string): boolean; function tdatamodule1.PesquisarNomeDoEmpregado(Nome_empreg: string):boolean; begin with CDSmpreg do begin close; Params.ParamByName('NOME_EMPREG').AsString := '%'+Nome_empreg+'%'; Open; Result := not IsEmpty; end; end; function TDataModule1.PesquisarMatriculaMarcacao (Matr: integer): boolean; begin with CDSmarcacao do begin close; Params[0].AsInteger := Matr; Open; Result := not IsEmpty; end; end; end. -------------------------------------------------------------------->FORMULARIO unit uPrincipal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, jpeg; type TFrmPrincipal = class(TForm) MainMenu1: TMainMenu; Cadastros1: TMenuItem; Funcionarios1: TMenuItem; Marcacao: TMenuItem; Justificativas1: TMenuItem; Image1: TImage; Dia1: TMenuItem; procedure LerArqTxtJustif(Sender: TObject); procedure Justificativas1Click(Sender: TObject); procedure Funcionarios1Click(sender: TObject); procedure Dia1Click(Sender: TObject); procedure MarcacaoClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPrincipal: TFrmPrincipal; implementation uses form_justif_pto, form_cad_func, form_ponto, form_cad_dia, UdmPonto; {$R *.dfm} procedure TFrmPrincipal.Justificativas1Click(Sender: TObject); begin Application.CreateForm(TFrmJustif, FrmJustif); try FrmJustif.ShowModal; finally FrmJustif.Release; end; end; procedure TFrmPrincipal.LerArqTxtJustif(Sender: TObject); var Arq: TextFile; Linha: String; begin AssignFile(arq, 'C:\Documents and Settings\Administrador\Desktop\PROJETO PONTO\justabr.txt'); Reset(Arq); repeat DataModule1.CDSjustif.open; DataModule1.CDSjustif.insert; ReadLn(Arq, Linha); // datamodule1.CDSjustifCOD_JUSTIF.AsString := copy(''); datamodule1.CDSjustifcod_MATR.AsString := Copy(Linha, 1, 8); datamodule1.CDSJustifDt_inicio.AsString := Copy(Linha, 9, 10); datamodule1.CDSJustifHora_inicio.AsString := Copy(Linha, 19, 3); datamodule1.CDSJustifDt_fim.AsString := Copy(Linha, 22, 10); datamodule1.CDSjustifHORA_FIM.AsString := Copy(Linha, 32, 4); datamodule1.CDSJustifCod_TipoJustif.AsString := Copy(Linha, 36, 2); datamodule1.CDSJustif.close; until Eof(Arq); CloseFile(Arq); end; procedure TFrmPrincipal.MarcacaoClick(Sender: TObject); begin Application.CreateForm(TForm3, Form3); try Form3.ShowModal; finally Form3.Release; end; end; procedure TFrmPrincipal.Dia1Click(Sender: TObject); begin Application.CreateForm(TForm2, Form2); try Form2.ShowModal; finally Form2.Release; end; end; procedure TFrmPrincipal.Funcionarios1Click(Sender: Tobject); begin Application.CreateForm(TForm_empreg_PTO, Form_empreg_PTO); try Form_empreg_PTO.ShowModal; finally Form_empreg_PTO.Release; end; end; end. AGUARDO SE PUDEREM ME AJUDAR