Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Valores por Defecto de campos (https://www.clubdelphi.com/foros/showthread.php?t=38329)

Daiana 11-12-2006 21:45:30

Valores por Defecto de campos
 
:confused: Hola, intente colocar algunos campos nulables con valores por default como constraints para los mismos campos de la tabla, para al momento de hacer un insert no tener que especificar estos campos en la sentencia, pero no me funcionó :(
Que debo hacer???:confused:

subzero 11-12-2006 22:16:24

Hola!.

Que te parece si nos documentas más con la version de delphi que estas trabajando y tú base de datos la estas desarrollando en qué?

Gydba 11-12-2006 22:29:46

Elo,

Bueno, no todos los componentes de Delphi de conexión a BD se comportan de la misma manera, por lo cuál es casi imposible determinarte cuál es tu problema.
En ciertos casos, con ciertos componentes, hay que llamar al proc Clear para enviar un NULL al campo. Pero sin info no hay certezas :)

Lejos de eso como consejo dejaría de lado eso de no pasar los valores por default, menos por código fuente, puesto que al final cuando uno busca migrar de BD termina con un tic nervioso al CTRL F buscando donde quedaron esos parámetros sin valores que no funcionan con el nuevo motor. Pero eso tomalo o dejalo como dicen...

Sumo a mi aclaración que no todos los moteres de BD permiten valores por defecto para sus estructoras... digo nomás.

Daiana 11-12-2006 23:22:57

Estoy trabajando con SQL Server 2000 de Microsoft y con Delphi 5, y aunque hago el insert sin especificar los campos que tienen valores por default en el motor de la BD (Analizador de Consultas de SQL), me sale el error, por lo tanto es imposible que en Delphi fucnione si el Motor de BD manda el error.
Entonces mi pregunta va mas hacia SQL Server que hacia Delphi. Me pueden ayudar??? HELPPPPPPPPPP!!!!!!!!!!!!!!!!!!!!!!

Gydba 11-12-2006 23:31:15

Hola nuevamente.

Sería más específico si nos comentás el tipo de error que te sale. Usas ADO, DBX, BDE? Cómo armás la sentencia del INSERT?

Yo ayudar quiero... al menos hasta que me vaya a comer que es palabra mayor ;)

Daiana 11-12-2006 23:57:05

Hola, oye muchas gracias Gydba, no te puedes ir a comer hasta que no me ayudes...;)
El error que me sale es que no puedo insertar valores NULL en el campo X, por ejemplo, si tengo una tabla T con los campos A, B y C, en la Base de datos a C lo tengo definido como un campo Nulable, y que por defecto guarde un '.', entonces en delphi se arma el insert con el cachedupdates, en la traza sale como insert into T (A,B) values(1,'ejemplo')
se supone debe insertar en T los valores (1, 'ejemplo', '.'), pero no lo hace, y no uqiero modificar el programa en Delphi, porque deberia modificar cientos de programas que manejan la tabla T, me explico???, entonces la solucion debe venir desde la BD de SQL Server 2000... me ayudas???

Gydba 12-12-2006 00:01:52

La verdad no te puedo seguir... debe ser la hora que me está matando el cerebro.

A ver: generás vos el INSERT a mano o mediante un clientdataset o similar? Ya probaste desde un QueryAnalyser si haciendo un INSERT te autocompleta la constraint con el valor default? Qué componentes usás?

Pues si me lo pide una mujer dejaría de ser caballero si le digo que no quiero ayudarla, así que me tienes entre la espada y la pared :)

Daiana 12-12-2006 00:09:46

Pues me encantan los caballeros... vamos a ver si puedo hacerme entender...
olvidemonos de Delphi por un momento y concentremonos en el Motor de BD si?? en el QueryAnalizer ya lo intente y no pudo autocompletar como lo llamas tu el INSERT, quiero saber si aparte de volver el campo que acepte nulos y asignarle un valor por defecto puedo hacer otra cosa, sin tener que modificar mi programa de Delphi... Si me explico???
Si quieres me respondes mañana vale!!

Gydba 12-12-2006 00:36:24

Si desde un QA no se realiza el insert del campo default entonces es un tema de base. Cómo definiste el campo dijiste?

Si mal no recuerdo la sintáxis era algo tipo:
Código SQL [-]
  CREATE TABLE Nombre_Tabla
  (NombreCampo DOMAIN [NOT NULL] [DEFAULT valor] [PRIMARY KEY],
   ..);

Probaste con pasando el nombre del campo y un null u omitiste ambos en el INSERT? Es decir:
Código SQL [-]
INSERT INTO TABLE (CAMPO1, CAMPO2) VALUES (VALOR1, NULL);
o
INSERT INTO TABLE (CAMPO1) VALUES (VALOR1);

Honestamente hace eternidad que no utilizo el SQL Server y no lo tengo a mano como para seguirte. Quizás es uno de esos SETs raros que hay que establecer (como el famoso SET MDY :) para las fechas) para los nulls quizás.


La franja horaria es GMT +2. Ahora son las 08:12:53.

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