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 27-08-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
Asignar valor nulo a un entero

Hola a todos
Soy nuevo en el foro y nuevo con el delphi (de hecho soy incluso nuevo como programador) por lo que todavia hay cosas que no tengo muy claras.

Os explico. Es tan sencillo como un gestor de citas. Cada dia se van a programar unas citas para unas horas y estoy haciendo la funcion para que se puedan eliminar citas. Os muestro el código:
Código Delphi [-]
 
procedure TFCreaCitas.btnEliminarClick(Sender: TObject);
var respuesta: word;
begin
  respuesta:= MessageDlg('Eliminar cita?', mtconfirmation, [mbYes, mbNo], 0);
        If respuesta=mrYes then begin
                showmessage('Cita eliminada');
 
        DMCitasCalendario.QIntervalo.Edit;
        DMCitasCalendario.QIntervaloDESCRIPCION.AsString := '';
        DMCitasCalendario.QIntervaloUSUARIO.AsInteger := null ;
        DMCitasCalendario.QIntervaloNOM_USUARIO.AsString := '';
        DMCitasCalendario.QIntervaloLOGIN.AsString := '';
El campo QIntervaloUSUARIO es de tipo entero y recoge el numero del usuario de tenia concertada la cita. Intento ponerlo a null pero me da un error de tipo: "could not convert variant of type (null) into type (integer)". Por tanto, supongo que a los enteros no se les puede asignar el valor null (no, al menos, "a pelo"). Si le asigno un valor numérico (por ejemplo, cero) lo coge perfectamente. He intentado poner QIntervaloUSUARIO.AsString := '' pero, aunque no da fallo, no cambia nada. Sé que es una chorrada de problema, pero le doy vueltas y no sé como hacerlo.

Gracias a los que os molesteis en respondedme y un saludo

Última edición por marcoszorrilla fecha: 27-08-2007 a las 12:54:59. Razón: Etiquetas Delphi
Responder Con Cita
  #2  
Antiguo 27-08-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Con el código que indicas no eliminas la cita, solamente la vacías, tendrías que aplicar:
Código Delphi [-]
DMCitasCalendario.QIntervalo.Edit;
DMCitasCalendario.QIntervalo.Delete;

Según releo, quizás lo que quieres sea:
Código Delphi [-]
 DMCitasCalendario.QIntervaloUSUARIO.Clear ;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 27-08-2007 a las 13:03:20.
Responder Con Cita
  #3  
Antiguo 27-08-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
Bueno, tienes razón. No me expliqué bien. No quiero eliminar el registro en sí, quiero dejarlo vacío, visible de que ese día a esa hora no hay ninguna cita concertada.

EDITO:

No se me ocurrió mirar las propiedades del Query. He probado tanto con .Clear como con .IsNull (no sé cómo no se me ocurrió antes) y me pasa algo que paso a explicar.


Código Delphi (todavía no sé cómo lo formateais :P)

showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);
DMCitasCalendario.QIntervaloUSUARIO.Clear;
showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);
DMCitasCalendario.QIntervaloUSUARIO.IsNull;
showmessage(DMCitasCalendario.QIntervaloUSUARIO.AsString);


Así he visto cómo tanto con .Clear como con .IsNull borra el entero que había antes, pero no sé porqué no lo guarda. He mirado la base de datos (Firebird) y este campo admite nulos, no es ni clave única ni primaria ni nada, por lo que no sé qué problema hay. Las soluciones que me diste, Marcos, funcionan, pero no lo guarda (y cuando le asigno a pelo .Value=3000 sí lo coge).

Si al menos pudieras/pudiérais orientarme un poco en qué tipo de problema puedo tener, os lo agradecería. Y si necesitais mas información no teneis más que pedirlo.

Gracias de nuevo

Última edición por Shikanda fecha: 27-08-2007 a las 14:15:26.
Responder Con Cita
  #4  
Antiguo 27-08-2007
Shikanda Shikanda is offline
Miembro
 
Registrado: ago 2007
Posts: 36
Poder: 0
Shikanda Va por buen camino
Por cierto, he probado con

DMCitasCalendario.QIntervalo.Post;
DMCitasCalendario.QIntervalo.UpdateSQL;
DMCitasCalendario.QIntervalo.RefreshSQL;

Y le da lo mismo una que otra que las 3
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
coger valor entero de un decimal jmlifi Varios 1 25-11-2005 17:12:47
Valor nulo en un string ElDioni Conexión con bases de datos 5 10-11-2005 09:29:57
Valor Nulo o en blanco y nil vtdeleon OOP 1 25-11-2004 05:41:50
Campo con valor nulo fjcg02 Conexión con bases de datos 4 10-11-2004 08:55:07
Valor nulo pache OOP 3 19-06-2003 08:39:13


La franja horaria es GMT +2. Ahora son las 13:14:50.


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