Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   select de registro que todavia no existe (https://www.clubdelphi.com/foros/showthread.php?t=85941)

anubis 28-05-2014 19:55:24

select de registro que todavia no existe
 
Bueno, aqui sigo dando lata.

No sabia muy bien como ponerle en el titulo, si el moderador lo considera, lo cambie si encuentra la forma que este mas claro.

La pregunta es, si tengo una tabla con varios campos, y le aplico un select para determinados campos (ya se que el SELECT * FROM TABLE esta prohibido ;)).
A la hora de insertar un registro nuevo y completo, como le puedo hacer si en el select faltan campos y tampoco puedo poner

Código SQL [-]
Select * from table where clave = 5

Si esa clave todavia no esta registrada?

gracias

ecfisa 28-05-2014 22:30:47

Hola anubis.

Disculpame, pero realmente no entiendo tu pregunta.

La consulta,
Código SQL [-]
Select * from table where clave = 5
necesariamente devolverá NULL, si el valor 5 es inexistente en la columna "clave".

Y para insertar un nuevo registro la forma genérica es:
Código SQL [-]
INSERT INTO NOMBRE_TABLA (COLUM1, COLUM2, COLUM3,...)
VALUES (VALOR1, VARLOR2, VARLOR3,...)

Tal vez si explicas con mas detalle la situación...

Saludos :)

anubis 29-05-2014 02:03:09

Gracias por contestar,

Me referia si yo tengo una tabla con n campos, en algunos casos se puede hacer

Código SQL [-]
SELECT * FROM TABLE

Pero si no quiero cargar todo porque alguno de los campos es un campo blob, lo hago hasta que lo necesite.

Ahora bien, si tengo
Código SQL [-]
SELECT CLAVE, NOMBRE FROM TABLE

Si quiero registrar clave, nombre y blob tendria que hacer un select de todos sino no me reconoce el campo blob?.

ecfisa 29-05-2014 05:31:13

Cita:

Empezado por anubis (Mensaje 476957)
...
Si quiero registrar clave, nombre y blob tendria que hacer un select de todos sino no me reconoce el campo blob?.

Hola anubis.

Si por "registrar" te refieres a traer los valores de las columnas, mínimamente deberás incluir CLAVE, NOMBRE y BLOB en el SELECT, si deseas usar sus valores.

Es decir, no es necesario que la consulta traiga todas las columnas de la tabla (que por otro lado es menos eficiente), pero sí aquellas cuyos valores vas a utilizar.

Saludos :)

Neftali [Germán.Estévez] 30-05-2014 10:29:06

Lo siento, pero yo es que tampoco te entiendo... :(

anubis 30-05-2014 15:13:42

Gracias por el interes y perdon por no explicarme bien.

Vereis, tengo una tabla con varios campos entre ellos un campo blob.

Como estoy accediendo de forma remota a la base de datos, si pongo
Código SQL [-]
SELECT * FROM TABLA

Me trae todos los registros y me tarda por los campos blob que son archivos pdf.
Para consulta no tengo problemas porque hago
Código SQL [-]
SELECT CLAVE, NOMBRE FROM TABLA

y si quiero ver el campo blob pues ya le pongo

Código SQL [-]
SELECT * FROM TABLA WHERE CLAVE = 1

En otro apartado o form, guardo registros, si le pongo lo mismo
Código SQL [-]
SELECT CLAVE, NOMBRE FROM TABLA
para ver los que hay en un dbgrid
Si quiero guardar tambien el campo blob me dice que no existe porque no lo puse en el select.

Asi que no se como puedo guardar el registro sin tener que volver a hacer
Código SQL [-]
SELECT * FROM TABLA
Porque me vuelve a cargar todos los campos de nuevo.

ecfisa 31-05-2014 05:31:33

Hola anubis.

Si estas agregando un nuevo registro, no es necesario traer ninguna columa, así que tu problema se debe producir cuando realizas una modificación.

Pero en este caso, si no trabajas en lotes, normalmente vas a traer un registro de forma similar a la que mencionas mas arriba:
Código SQL [-]
SELECT * FROM TABLA WHERE CLAVE = :PCLAVE
o mejor todavía, sólo las columnas que van a ser modificadas, por ej.:
Código SQL [-]
SELECT COL1, COL3, COL11 FROM TABLA WHERE CLAVE = :PCLAVE
Pero aún en el peor de los casos sólo estarías trayendo la totalidad de columnas de un solo registro.

De todos modos, si tenes un campo blob extensísimo y hay que agregar o quitar algo de su contenido, indefectiblemente vas a tener que traerlo (incluirlo en el SELECT) para poder trabajar sobre él.

Saludos :)

anubis 06-06-2014 22:41:42

Gracias, era lo que temia.

Igual, pensando, puedo grabar el registro sin el blob y luego modificarlo y grabarlo ya con el blob, asi solo seria un registro.

mmm habra que probarlo.

gracias


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

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