Ir para conteúdo
Fórum Script Brasil
  • 0

Pesquisa não funciona


Bruno Dorbação

Pergunta

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

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bruno desta forma fica muito complicado fazer uma consulta, porque você não fez a consulta dentro do próprio form usando um query? ou Criando um Form de pesquisa de Funcionário onde você pode escolher ser que fazer a consulta por nome, Matricula ou dataadimissão e etc...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Bruno Dorbação'!

... Mas por nome retorna a seguinte mensagem (CDSmpreg: Parameter 'NOME_EMPREG' not found.)...

O sistema está reclamando que você está tentando utilizar um parâmetro que ele não foi criado.

Poste o SQL referente a esta consulta (a que está com problema).

Outro ponto é que você ora usa CDSmpreg para pesquisar MatriculaDoEmpregado e ora usa o mesmo CDSmpreg para pesquisar NomeDoEmpregado. Você troca a SQL ou é o mesmo parâmetro que faz ambas as consultas. Ou sqja Params[0] é o mesmo que ParamByName('NOME_EMPREG') ?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...