![]() |
Update Un Poco Complicado ¿como Hago? Hola AMIGUETES DEL FORO, encontre una nueva forma de martirizarlos con una nueva consulta que quiero hacerles, necesito traer varios datos de vairas tablas, y a su vez deseo poder hacer un UPDATE de algunos y solo algunos de los campos de estas tablas, obviamente aceptan valores nulos en el caso de querer que quede alguno vacio, las tablas son PERSONAL, DATOS_SECUNADRIOS Y NACIMIENTO, les dejo una solucion que me pasaron, aunque no me sirve porque si o si debo completar todos los campos solicitados ----------------------------------------------------- set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[SP_CARGA_DE_DATOS] @apellido varchar(20), @nombre varchar(20), @dni int, @sexo varchar(20), @cipfa int, @f_nacimiento smalldatetime, @p_nacimiento varchar(50) AS DECLARE @vTextoError varchar(200) DECLARE @idPersonal int --Comienzo la transacción BEGIN TRANSACTION --Agrego registro en la tabla Personal INSERT INTO PERSONAL (apellido, nombres, dni) VALUES (@apellido, @nombre, @dni) IF @@error <> 0 begin set @vTextoError = 'No se pudo insertar en la tabla Personal' raiserror 50001 @vTextoError rollback transaction return end --Guardo el nro. de id insertado SET @idPersonal = @@identity --Agrego registro en la tabla Datos_Secundarios INSERT INTO DATOS_SECUNDARIOS (sexo, cipfa, id_personal) VALUES (@sexo, @cipfa , @idPersonal) IF @@error <> 0 begin set @vTextoError = 'No se pudo insertar en la tabla datos_secundarios' raiserror 50001 @vTextoError rollback transaction return end --Agrego registro en la tabla nacimiento INSERT INTO NACIMIENTO (fecha_nacimiento, provincia_nacimiento, id_personal) VALUES (@f_nacimiento, @p_nacimiento, @idPersonal) IF @@error <> 0 begin set @vTextoError = 'No se pudo insertar en la tabla nacimiento' raiserror 50001 @vTextoError rollback transaction return end COMMIT TRANSACTION ___________________________ DESDE YA LES AGRADEZCO POR ANTICIPADO SUS RESPUESTAS, GRACIAS!!! |
Respuesta: Update Un Poco Complicado ¿como Hago? No se comprende, si desea que algunos datos queden vacios, no envie el valor en la variable correspondiente y haga ISNULL(@VARIABLE, '') Saludos. |
Respuesta: Update Un Poco Complicado ¿como Hago? HOLA IISLAS !!!! Como siempre un maestro en el tema!!!, pero yo soy bastante principiante y no entiendo donde meterlo ese codigo ni como se usa, los datos que me dieron y que trascribi son unos que me pasaron como ayuda, y por lo visto es un insert con una validacion de datos debajo, pero nada mas, y si yo no llego a agregar el apellido, por ejemplo no anda nada, y tengo que poner todos estos datos, pero estos datos se van a ver en una planilla y se van a cargar datos en algunos casilleros y no en todos entonces lo que me dieron no sirve, me puedes ayudar??? Como siempre te agradezco MAESTRO!!! |
Respuesta: Update Un Poco Complicado ¿como Hago? Por favor si alguien me puede ayudar, ya que no se implementar la solucion que me dio IIslas, porque no se donde meter ese codigo ni entiendo como funciona, porque soy autodidacta y quizas no me haya expresado bien en lo que tenia que pedir. |
Respuesta: Update Un Poco Complicado ¿como Hago? Veamos, si yo quiero que algunos datos queden VACIOS ('') en mi tabla, ya que las variables pueden venir en NULL y mi tabla acepta NULOS, entonces puedo hacer 2 cosas. En las propiedades de mis columnas en mi tabla, coloco como DEFAULT un blanco o lo que yo quiera que se guarde si el usuario no proporciona la informacion y le digo a la columna QUE NO ACEPTE NULOS. O bien, en el insert, valido que si es nulo el valor de la variable, me ponga un valor "x", ejemplo: -- AMaterno, Religion y Estudios, pueden venir en NULL INSERT INTO myTabla (Nombre, APaterno, AMaterno, Religion, Estudios) VALUES (@Nombre, @APaterno, ISNULL(@AMaterno, 'Sin apellido'), ISNULL(@Religion, 'Sin religion'), ISNULL(@Estudios, 'Sin estudios')) Claro esta que, esos valores "default", podria haberlos puesto en mi defincion de tabla. ¿Quedo mas claro? |
Respuesta: Update Un Poco Complicado ¿como Hago? Si, muchas gracias por el ejemplo, ahi lo pude ver, PERO SIGO CON UNA DUDA, ahi inserto unos valores en unos campos X, pero si en el mismo ejemplo de antes, quiero MODIFICAR ya no solo insertar por primera vez y quiero que me mantenga los valores cargados en los otros campos sin modificarse, es lo mismo? porque de esta manera insertaria unos valores default en ciertos campos pero no mantengo el valor que poseia antes, si es distinto en este caso, me mostrarias como hacerlo? la verdad, TE AGRADEZCO MUCHO LA PACIENCIA QUE ME TENES PORQUE LAS EXPLICACIONES TIENEN QUE SER MUY SIMPLES, PORQUE NO SE MUCHO, PERO SE NOTA QUE HAY ALMA DE PROFE POR AHI. GRACIAS. |
Respuesta: Update Un Poco Complicado ¿como Hago? Si hablas de un UPDATE, solo afectara aquellos campos que vengan con NULL, ademas, solo se afectan los campos mencionados en el SET.......... Suponiendo que tengo una tabla con 3 campos, NOMBRE, APATERNO, AMATERNO y quiero modificar los nombres que se insertaron como MA EUGENIA por MARIA EUGENIA UPDATE TABLA SET NOMBRE = 'MARIA EUGENIA' WHERE NOMBRE = 'MA EUGENIA' Los campos APATERNO y AMATERNO se mantendran con los valores originales. ¿A eso te refieres?, ¿es es tu duda? |
Respuesta: Update Un Poco Complicado ¿como Hago? Cita:
mi solucion, obtengo los campos, elimino el registro de la tabla e inserto nuevamente pero con los valores actuales(asi cambio los campos que quiero desde mi aplicacion y los demas se quedaran intactos). por favor si hay una solucion mas optima, postearla, yo tuve el mismo problema y termine haciendolo de la manera anterior, pero se quiere rendimiento tambien y lo antes expuesto me parece no es nada optimo. |
Respuesta: Update Un Poco Complicado ¿como Hago? Cita:
Si, es lo que quisiera hacer, lo que hiciste vos, pero me podrias poner un codigo de ejemplo? como ya mencione antes me cuesta interpretar algo si no lo veo porque no me explico como poder hacerlo, y si puedo lograr hacer esto desde el sql o tengo que ejecutarlo desde otro lado |
Respuesta: Update Un Poco Complicado ¿como Hago? Haber eso depende, yo lo que hice fue un aplicacion de escritorio, y en los campos donde queria insertar, pues ahi mismo obtenia los datos referentes a cada campo, por ejemplo, tengo 3 campos: nombreUsuario, nombre, numeroIdentiad. Introduzco un nombre de usaurio, hago una busqueda en mi BD (SELECT nombreUsuario, nombre, numeroIdentidad FROM T_Usuario WHERE T_Usuario.numeroIdentidad = @varNumIdent ), asi ya tendras los datos, solo tienes que distribuirlos por los campos que le corresponde de tu aplicacion. Luego borras la tupla anterior de la BD (DELETE FROM T_Usuario WHERE numeroIdentidad = "varNumId). desde tu aplicacion cambias los valores que deseas en los campos que desees y vuelves a insertar pero con los nuevos valores (INSERT INTO T_Usuario (nombreUsuario, nombre, numeroIdentiad) VALUES @nombreUsuario, @nombre, @numeroIdentiad. ) Aunque la manera mas sencilla es a traves de una grilla pero eso ya depende del lenguaje de programacion en el que desarrolles tu aplicacion, o si estas usando frameworks para el ORM pues es mas sencillo la parte de consultas. |
Respuesta: Update Un Poco Complicado ¿como Hago? Holas de nuevo, les muestro la simpleza de lo que quiero hacer que es hasta donden llegue hasta ahora y les comento donde falla o erra mi procedimiento: setANSI_NULLSON setQUOTED_IDENTIFIERON go ALTERPROCEDURE [dbo].[SP_CARGA_DE_DATOS_EN_DEPCIA] @id int, @dpcia varchar(255) --SI ACA INSERTO UN VALOR, POR EJEMPLO -- @dpcia varchar(255) = xxxxx SE CARGA EL --VALOR xxxx PERO COMO UN STRING, NO xxxx --COMO xxxx QUE ES EL NOMBRE DE UN CAMPO DE --UNA DE LA TABLA QUE QUIERO QUE MANTENGA EL --VALOR @area varchar(16), @division varchar(70), @dpto varchar(60), AS /*SELECT @dpcia = DEPENDENCIA, @area = AREA_CORRESPONDIENTE, @division = DIVISION, @dpto = DEPARTAMENTO, FROM DEPENDENCIAS WHERE Id_Cod_Dpcia = @id */ UPDATE DEPENDENCIAS SET DEPENDENCIA = @dpcia, AREA_CORRESPONDIENTE = @area, DIVISION = @division, DEPARTAMENTO = @dpto, WHERE Id_Cod_Dpcia = @id GRACIAS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
Respuesta: Update Un Poco Complicado ¿como Hago? Por Si No Quedo Lo Suficientemente Claro, Lo Que Yo Quiero Es Introducir El Valor De Un Campo Y No Un String En Particular, Les Mando Un Abrazo A Todos Y Gracias Por Las Respuestas!!!!!! |
Respuesta: Update Un Poco Complicado ¿como Hago? con respecto al codigo anterior, mi duda es como hacer que en el mismo procedimiento, me muestre primero el valor en los campo y luego poder modificar el que desee y que el resto de los valores permanezcan como antes por medio de una variable que resguarde esos valores, les muestro hasta donde llegue, le spido por favor me ayuden, GRACIAS GENTE!!!!! setANSI_NULLSON setQUOTED_IDENTIFIERON go ALTERPROCEDURE [dbo].[SP_CARGA_DE_DATOS_EN_DEPCIA] @id int, @dpcia varchar(255) --SI ACA INSERTO UN VALOR, POR EJEMPLO -- @dpcia varchar(255) = xxxxx SE CARGA EL --VALOR xxxx PERO COMO UN STRING, NO xxxx --COMO xxxx QUE ES EL NOMBRE DE UN CAMPO DE --UNA DE LA TABLA QUE QUIERO QUE MANTENGA EL --VALOR @area varchar(16), @division varchar(70), @dpto varchar(60), AS UPDATE DEPENDENCIAS SET DEPENDENCIA = @dpcia, AREA_CORRESPONDIENTE = @area, DIVISION = @division, DEPARTAMENTO = @dpto, WHERE Id_Cod_Dpcia = @id |
Respuesta: Update Un Poco Complicado ¿como Hago? Código: ALTERPROCEDURE [dbo].[SP_CARGA_DE_DATOS_EN_DEPCIA]:arriba: Espero te sirva, saludos!.. |
Respuesta: Update Un Poco Complicado ¿como Hago? Les Agradezco!!! Pude Solucionar Mi Problema Una Vez Mas Gracias A Todos Los Que Contestaron Mi Pregunta Y Seguramente Nos Veremos Pronto Con Una Nueva "duda Existencial" |
Respuesta: Update Un Poco Complicado ¿como Hago? Y la solución fue....? :arriba: Saludos!. |
Respuesta: Update Un Poco Complicado ¿como Hago? La solucion fue la que vos pusiste!!! gracias a tu ayuda, pude empezar a implementarlo aunque al hacer el UPDATE en varias tablas todavia no lo pude hacer funcionar, podrias modificar el codigo para que modifique varios campos de varias tablas? Te agradezco las soluciones!!! |
| La zona horaria es GMT -6. Ahora son las 23:43. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.