Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2013
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Question Problema con Sentencia SQL

Hola nuevamente mis amigos de codigo , el problema es el siguiente:

1 TComboBox llamado cboTipDocIden (que tiene el tipo de Documento de Identidad Nacional: 1.DNI y 2.RUC) y
1 TEdit llamado txtDocIdenSolic (que tiene el Nro del Documento de identidad)

La Consulta SQL que deseo ejecutar esta en un componente TUniQuery y es la siguiente:

Código SQL [-]
SELECT oper_solicitante.id_solicitante, oper_solicitante.ape_pat, oper_solicitante.ape_mat,
       oper_solicitante.nombre, oper_solicitante.direcc_idtipcalle, oper_solicitante.direcc_nombrecalle,
       oper_solicitante.direcc_nro, oper_solicitante.idvinculo_fk
FROM oper_solicitante
WHERE oper_solicitante.tipDocIden = :TipDocIden AND
      oper_solicitante.nroDocIden = :NroDocIden

Ambos parametros son de tipo Text.

Ahora bien, la consulta se ejecuta en el evento OnExit de txtDocIdenSolic, aqui esta el codigo:

Código Delphi [-]
procedure TForm1.txtDocIdenSolicExit(Sender: TObject);
var
  TipDocIden, NroDocIden:string;
begin
  if(length(txtDocIdenSolic.Text)>0) then
  begin
    TipDocIden:=chr(39)+copy(cboTipDocIden.Text,1,1)+chr(39);
    NroDocIden:=chr(39)+trim(txtDocIdenSolic.Text)+chr(39);
    q_DetSolicitante.Close;
    q_DetSolicitante.Params[0].AsString:=TipDocIden;
    q_DetSolicitante.Params[1].AsString:=NroDocIden;
    q_DetSolicitante.Open;

    if(length(q_DetSolicitante.FieldByName('id_solicitante').AsString)=0) then
    begin
      stbar.Panels[0].text:='Nuevo Solicitante...';
      txtApePat.SetFocus;
    end
    else
    begin
      stbar.Panels[0].Text:='Solicitante Reiterativo...';
      txtApePat.Text:=q_DetSolicitante.FieldByName('ape_pat').AsString;
      txtApeMat.Text:=q_DetSolicitante.FieldByName('ape_mat').AsString;
      txtNombre.Text:=q_DetSolicitante.FieldByName('nombre').AsString;
    end;
  end
  else
    msg1.Execute;
end;

Finalmente, la estructura de la tabla donde realizo las operaciones se llama oper_solicitante (MySQL) es:

Código SQL [-]
CREATE TABLE `oper_solicitante` (
  `id_solicitante` int(11) NOT NULL,
  `tipDocIden` char(1) NOT NULL,
  `nroDocIden` varchar(11) NOT NULL,
  `ape_pat` varchar(50) NOT NULL,
  `ape_mat` varchar(50) NOT NULL,
  `nombre` varchar(50) NOT NULL,
  `direcc_idtipcalle` int(11) NOT NULL,
  `direcc_nombrecalle` varchar(80) NOT NULL,
  `direcc_nro` varchar(15) NOT NULL,
  `idvinculo_fk` int(11) NOT NULL,
  PRIMARY KEY (`id_solicitante`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


El asunto es que la consulta no arroja ningun registro, sin embargo cuando cambio los parametros por valores literales ejecuta normalmente.

Ya le di muchas vueltas y no hallo el problema.

Agradeceria una mano

Muchas Gracias
Responder Con Cita
  #2  
Antiguo 12-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por darkamerico Ver Mensaje
El asunto es que la consulta no arroja ningun registro, sin embargo cuando cambio los parametros por valores literales ejecuta normalmente.
Eso es porque al usar Params, el valor en sí dado al parámetro no debe llevar comillas. Las comillas son para indicarle a Delphi o al motor que lo encerrado entre ellas es una cadena, pero al tener ya un objeto TParam, a éste no es necesario darle el valor entre comillas.

Espero haberme explicado.

Saludos.
Responder Con Cita
  #3  
Antiguo 12-01-2013
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Pues estabas en lo correcto!

Cita:
Empezado por Al González Ver Mensaje
Eso es porque al usar Params, el valor en sí dado al parámetro no debe llevar comillas. Las comillas son para indicarle a Delphi o al motor que lo encerrado entre ellas es una cadena, pero al tener ya un objeto TParam, a éste no es necesario darle el valor entre comillas.

Espero haberme explicado.

Saludos.
Gracias Al Gonzalez, cambie mi codigo para dejarlo asi:

Código Delphi [-]
TipDocIden:=copy(cboTipDocIden.Text,1,1);
NroDocIden:=trim(txtDocIdenSolic.Text);

y Trabajo

Espero que este post le sirva a otros que les haya ocurrido lo mismo.


Última edición por Casimiro Notevi fecha: 12-01-2013 a las 18:42:26. Razón: ¡¡¡ PONER LAS ETIQUETAS [DELPHI] [/DELPHI] !!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con sentencia de búsqueda jozelui MySQL 1 19-12-2008 01:26:06
Problema con sentencia SQL JELIRM SQL 6 03-04-2007 20:41:50
Problema entre query y sentencia sql ilichhernandez Conexión con bases de datos 1 17-11-2005 21:00:05
Y continuando con las preguntas....Problema en una sentencia sql con query ilichhernandez Conexión con bases de datos 4 31-10-2005 20:28:38
problema con order by en sentencia sql clanmilano Conexión con bases de datos 1 29-06-2005 05:12:30


La franja horaria es GMT +2. Ahora son las 08:00:20.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi