Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
tAdoStoredProc, manejo de parametros

Estoy trabajando con Este elemento de un procedimiento almacenado que me realiza una inserción. Trabajando desde el gestor de BD no tengo ningun problema el SP realiza su trabajo.
Pero al hacerlo desde c++ builder me estan generando conflicto los parametros, ya que le esta dando valores que no le corresponden a un atributo en especifico.

Asigno los valores de la siguiente forma:

Código:
                DM1->ADOSP1->Close();
                DM1->ADOSP1->Parameters->ParamByName("identificador")->Value = "abc123";
                DM1->ADOSP1->Parameters->ParamByName("nombre")->Value = nombre;
                DM1->ADOSP1->Parameters->ParamByName("apellidoP")->Value = apellidoP;
                DM1->ADOSP1->Parameters->ParamByName("apellidoM")->Value =  apellidoM;
                DM1->ADOSP1->Parameters->ParamByName("fecha")->Value = fecha;
                DM1->ADOSP1->Parameters->ParamByName("telefono")->Value = telefono;
                DM1->ADOSP1->Parameters->ParamByName("celular")->Value = celular;
                DM1->ADOSP1->Parameters->ParamByName("pais")->Value = pais;
                DM1->ADOSP1->Parameters->ParamByName("estado")->Value = estado;
                DM1->ADOSP1->Parameters->ParamByName("ciudad")->Value = ciudad;
                DM1->ADOSP1->Parameters->ParamByName("colonia")->Value = colonia;
                DM1->ADOSP1->Parameters->ParamByName("calle")->Value = calle;
                DM1->ADOSP1->Parameters->ParamByName("numero")->Value = numero;
                DM1->ADOSP1->Parameters->ParamByName("profesion")->Value = profesion;
                DM1->ADOSP1->Parameters->ParamByName("estadoC")->Value = civil;
                DM1->ADOSP1->Parameters->ParamByName("escolaridad")->Value = escolaridad;
                DM1->ADOSP1->Parameters->ParamByName("sexo")->Index  = sexo;
                DM1->ADOSP1->Parameters->ParamByName("sangre")->Value = sangre;
                DM1->ADOSP1->Parameters->ParamByName("correo")->Value = correo;

                DM1->ADOSP1->Prepared;
                DM1->ADOSP1->Open();
Previamente asigno los valores a las variables de la siguiente forma:

Código:
 nombre = txNombre->Text.Trim();
      apellidoP = txApellidoP->Text.Trim();
      apellidoM = txApellidoM->Text.Trim();
      fecha = dpFecha->Date.FormatString("yyyy-mm-dd");
      telefono = txTelefono->Text ;
      celular = txCelular->Text ;
      correo = txCorreo->Text ;
      calle = cbCalle->KeyValue  ;
      numero = txNumero->Text;
      colonia = cbColonia->KeyValue ;
      ciudad = cbCiudad->KeyValue  ;
      estado = cbEstado->KeyValue;
      pais = cbPais->KeyValue;
      profesion = txProfesion->Text;
      escolaridad = cbEscolaridad->Text;
      civil = txEstCivil->Text;
      sangre = cbSangre->Text ;
He corrido la aplicación paso a paso y las variables tienes los valores correctos pero a pesar de eso se ocaciona el siguiente error

Cita:
incorrect date value 'martinez' for colum 'fecha'...
al parecer porque asigna el valor del apellidoM al parametro fecha y así susesivamente con otros parametros.

De antemano muchas gracias
Responder Con Cita
  #2  
Antiguo 18-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y la sentencia sql insert?
Responder Con Cita
  #3  
Antiguo 18-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Como comentaba es un procedimiento almacenado. Por eso uso el TAdoStoredProc y así solo le envio los parametros y desde el inspector de propiedades le indico a cual procedimiento almacedo de la BD corresponde
Responder Con Cita
  #4  
Antiguo 18-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, pues el procedimiento almacenado
Responder Con Cita
  #5  
Antiguo 19-10-2017
arturoio arturoio is offline
Miembro
NULL
 
Registrado: oct 2017
Posts: 17
Poder: 0
arturoio Va por buen camino
Código SQL [-]
Delimiter $$
DROP PROCEDURE IF EXISTS insertaPaciente;
    CREATE PROCEDURE insertaPaciente (identificador VARCHAR(12), nombre VARCHAR(45), apellidoP VARCHAR(45), apellidoM VARCHAR(45), fecha DATE, telefono VARCHAR(15), celular VARCHAR(15),
    pais INT, estado int, ciudad int, colonia int, calle int, numero VARCHAR(7), profesion VARCHAR(45), estadoC VARCHAR(15), escolaridad VARCHAR(45), sexo int, sangre VARCHAR(2), correo VARCHAR(70)) ##Se definen los parametros que necesitara el SP
    
    BEGIN #Inicia las intrucciones para el SP
    DECLARE direccion INT; #Declaramos una variable y a continuación comprobaremos si ya existe un registro igual
    SET direccion = (Select count(cl08_Id) from cl08 where cl14_Id = pais and cl13_Id = estado and cl12_Id = ciudad and cl09_Id = calle and cl11_Id = colonia and cl08_Numero = numero);
    
    IF direccion = 0 # a traves de este if decidimos si se inserta un nuevo registro o se utiliza el que ya existe
    THEN
        INSERT INTO cl08 values (null,calle,colonia,numero,ciudad,estado,pais);
    END IF;    
    
    SET direccion = (Select cl08_Id from cl08 where cl14_Id = pais and cl13_Id = estado and cl12_Id = ciudad and cl09_Id = calle and cl11_Id = colonia and cl08_Numero = numero);
    insert into cl00 values (null,identificador, nombre, apellidoP, apellidoM, fecha, telefono, celular, profesion, estadoC,escolaridad, sexo, sangre, correo, direccion); # Hacemos nuestra inserción 

END $$

Este es el SP. Desde el gestor de la Base de datos funciona sin problemas
Responder Con Cita
  #6  
Antiguo 20-10-2017
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Solo por ensayar, cambia la sentencia insert del procedimiento almacenado y coloca de forma explicita las columnas a afectar:

Código SQL [-]
insert into c100(nombreCol1, nombreCol2, ... etc) values (null, identificador, nombre, apellidoP.. ect)
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
direction en TADOStoredProc !! Confucio SQL 2 18-10-2007 14:43:41
Manejo de parametros en sql zvf SQL 3 13-09-2007 16:09:49
Problemas con TADOStoredProc david.rguez Conexión con bases de datos 0 02-07-2006 19:52:23
TADOStoredProc & DBLookupComboBox TriLoCBA Conexión con bases de datos 0 23-09-2005 15:55:52
Locate de TADOStoredProc arantzal Varios 0 09-02-2005 16:19:20


La franja horaria es GMT +2. Ahora son las 05:56:35.


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