Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
como guardar un nulo en un parametro

Hola estoy haciendo una inserción y mando muchos
parametros de los cuales en algunas circunstancia necesito mandar un parámetro con valor nulo estoy haciendo lo siguiente y tengo error
[delhi]
Parameters.ParamByName('pId_marca').Value:= Null;

[/delphi]

por favor si alguien puede ayudarme para mandar un valor nulo a la BD?
Muchas gracias
Responder Con Cita
  #2  
Antiguo 28-01-2008
Blackspike Blackspike is offline
Miembro
 
Registrado: dic 2006
Ubicación: Mallorca, Baleares
Posts: 29
Poder: 0
Blackspike Va por buen camino
Prueba a poner esta linea.

Código Delphi [-]
Parameters.ParamByName('pId_marca').Clear;

Saludos.
Responder Con Cita
  #3  
Antiguo 28-01-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
No soluciono

Hola Gracias por la ayuda. Pero no se si estoy haciendo mal porque no puedo con clear, anteriormente ya intente y el compilador no lo reconoce, directamente no deja ni compilarme el programa.
Estoy trabajando con un TADOquery y de esta manera no lo reconoce
Código Delphi [-]

ADOqueryInsert.Parameters.ParamByName('pId_marca').Clear;
Puede ser que sea el adoquery? Saludos Velia
Responder Con Cita
  #4  
Antiguo 28-01-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Clear no pone a nulo el parametro. Lo que hace es borrarlo de la lista de parámetros. Lo correcto es como lo pusiste en un principio, pero ¿Que error te da? ¿Quien te lo dá, Delphi o MySQL?.

Si el parámetro es una cadena, basta ponerla a '' y MySQL la tomará como nulo.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #5  
Antiguo 28-01-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Otra cosa...

Para poder usar Null necesitas que en la lista de uses se encuentre la unidad Variants...


Saludos...
Responder Con Cita
  #6  
Antiguo 28-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por AzidRain Ver Mensaje
Clear no pone a nulo el parametro. Lo que hace es borrarlo de la lista de parámetros. Lo correcto es como lo pusiste en un principio
No se de donde sacas esa idea, pero la ayuda de delphi dice:

Cita:
Empezado por TParam.Clear Method help
Use Clear to assign a NULL value to a parameter. Calling Clear neither sets nor clears the Bound property. When assigning a NULL value to a parameter, set the Bound property as well as calling Clear.
Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 29-01-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
Exclamation

Estuve intentando de todas formas.
1 )Primero el metodo clear no esta disponible con TADOquery.Parameters.ParambyName('id_marca').

2) Con la instrucción de la siguiente forma

Código Delphi [-]
TADOquery.Parameters.ParambyName('id_marca').Value:= Null
tengo el siguiente error

"Parameter object is improperly defined. Inconsistent or incomplete information was provided."

3) también probe con VarNull
pero me graba el primer valor (1) de la tabla relacionada

Les sigo agradeciendo por la ayuda y el tiempo dedicado.
Saludos Velia
Responder Con Cita
  #8  
Antiguo 29-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
No me había topado con esta situación en ADO. Tampoco tengo tiempo de probarlo ahora, pero navegando por el help, pienso que quizás haga falta hacer esta asignación:

Código Delphi [-]
  ADOQuery1.Parameters.ParamByName('id_marca').Attributes :=
    ADOQuery1.Parameters.ParamByName('id_marca').Attributes + [paNullable];
  ADOquery1.Parameters.ParambyName('id_marca').Value:= Null;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 29-01-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
Thumbs up

Gracias por la ayuda pero no consigo solucionar el problema.
La que me queda es hacer la sentencia sql a mano y pasarles parametros de acuerdo al contenido de los mismos.

Si existe alguna forma voy a seguir probando
Saludos y gracias por el tiempo nuevamente
Responder Con Cita
  #10  
Antiguo 29-01-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Perdon tienen razon, lo quepasa es que yo no uso ADO. Yo solo trabajo con las fantásticas Zeos. jeje
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #11  
Antiguo 29-01-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Con ADO, dado que no existen los métodos AsXYZ que fuerzan el tipo de datos del parámetro, casi siempre hay que especificarlo explícitamente. Así parece ser en este caso, aun cuando el valor pasado sea NULL:

Código Delphi [-]
ADOquery1.Parameters.ParambyName('id_marca').DataType := ftInteger;
ADOquery1.Parameters.ParambyName('id_marca').Value:= Null;

No obstante, no especificas el uso del parámetro. Si es para asignar el valor de un campo, lo anterior te sirve, siempre y cuando el campo en la tabla realmente acepte valores nulos. Pero si se trata de un parámetro de comparación, por ejemplo:

Código:
select * from tabla where id_marca = :id_marca
entonces no creo que funcione ya que las comparaciones con NULL se hacen con el operador IS en lugar de =.

Bye
Responder Con Cita
  #12  
Antiguo 29-01-2008
Velia Velia is offline
Miembro
 
Registrado: oct 2005
Posts: 71
Poder: 19
Velia Va por buen camino
Thumbs up

Por Fin!!!!!!!!
Muchas gracias a todos por la ayuda
Funciona gracias a vos keyBoy es la única manera y me ahorraste laburo.
Saludos Velia
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
Parametro nulo en un procedimiento almacenado Viky SQL 3 29-03-2007 22:45:22
¿Cómo pasar la clave de conexión como parámetro en una bd de mysql? D@byt Conexión con bases de datos 2 30-01-2007 13:52:21
Establecer a nulo un parámetro efelix Conexión con bases de datos 8 28-10-2006 16:18:59
Pasar parametro DateTime nulo YaninaGenia .NET 8 25-07-2006 22:49:59
Como obtener y pasar como parametro un Documento XML Ana Daniela Internet 1 21-08-2004 02:35:04


La franja horaria es GMT +2. Ahora son las 21:04:31.


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