Se Puede Evitar el Caso Padre sin Hijos?

27/05/2004 - 00:13 por Nelson Rodriguez | Informe spam
Desearía saber si hay alguna manera de evitar el Caso de tablas "Padre" sin
"Hijos"?
O en otras palabras "cabezales" sin "líneas".

Gracias

Nelson Rodriguez
neroig@adinet.com.uy
Salto - Uruguay

Preguntas similare

Leer las respuestas

#6 Carlos Sacristan
27/05/2004 - 17:50 | Informe spam
En realidad no tengo código implementado, es más una idea que otra cosa.
De todos modos consistiría en lo siguiente. Según la primera opción (dos
procedimientos) sería algo así:

- pa_almacenaLineaConCabecera -> tendría los parámetros de la cabecera
(tales como usuario creación, etc) y los de la línea (artículo solicitado,
partida del presupuesto a imputar, etc). El procedimiento crearía dentro de
una transacción la cabecera y luego la línea y recogería tanto el código de
cabecera como el de línea recién insertados en parámetros de salida
- pa_almacenaSoloLinea -> contendría el código de la cabecera al que
imputar la línea juntos con los datos propios de ésta. Devolvería el código
de línea recién creada como parámetro de salida


Si no quisiéramos tener dos procedimientos para insertar los datos
(opción que no recomiendo porque complica la lógica y mantenimiento de
éste), tendríamos una cosa como la que sigue:

- pa_almacenaLineaConCabeceraSiempre -> cuando quisiéramos insertar la
primera línea de un pedido funcionaría como pa_almacenaLineaConCabecera,
pero cuando quisiéramos almacenar una línea a un pedido existente, todos los
datos de la cabecera (menos el identificador de ésta, claro está) serían
NULL (o lo que se quisiera). El procedimiento tendría que controlar que si
se pasa un código de cabecera válido significa que los valores de la línea
que se pasan se quieren incorporar a dicha cabecera

Es una idea, ya digo. Yo, de implementar alguna de las dos, optaría por
la primera porque su mantenimiento y sus llamadas son más sencillos. Con la
segunda opción el único que sale ganando es el desarrollador, que se evita
tener que llamar a dos procedimientos distintos pero no el motor, que es de
lo que se trata al fin y al cabo.

Espero haberme explicado


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Maxi" escribió en el mensaje
news:ecJoaq$
Hola Carlos!! no entendi tu modelo :( serias tan amable de postiar un
poquitin de codigo?

gracias


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:%
>
> Bueno, todo eso que comentas se puede implementar en la lógica de un
> procedimiento almacenado. Podrías tener uno para insertar la primera
línea,
> en el que le tendrías que pasar los datos de la cabecera también, menos


el
> código de ésta, claro está, y este procedimiento te devolvería los


códigos
> de cabecera y línea recién insertados (preferiblemente a través de
> parámetros de retorno). El resto de las líneas las podrías insertar a
través
> de un procedimiento que sólo requiriera el identificador de la cabecera,
> aunque también lo podrías hacer en el mismo que te he comentado antes,
> teniendo en cuenta que sólo iría el identificador de la cabecera a NULL
> cuando fueras a crear un nuevo pedido.
>
> El caso de eliminación es similar: tendrías que comprobar que si se
> borra la última línea, se elimine también la cabecera.
>
> Como verás, el hecho de manipular los datos a través de


procedimientos
> almacenados da mucho más juego que unos simple INSERT o DELETE lanzados
> directamente desde la aplicación cliente. Eso sin tener en cuenta las
otras
> ventajas que poseen...
>
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
> Se agradece la inclusión de sentencias DDL
>
>
> "Nelson Rodriguez" escribió en el mensaje
> news:
> > Maxi, tambien si va eliminando líneas de una factura YA grabada
> > anteriormente hasta dejarla sin líneas.
> > Te pediría, si no tienes inconvenientes, me pasaras un ejemplo de como
tu
> lo
> > haces.
> >
> > Gracias
> >
> > "Maxi" escribió en el mensaje
> > news:
> > > Hola, si que es posible pero no de forma directa :(, todo dependera


de
> > como
> > > este armado tu sistema pero yo por ej en mi Store de insert de una
> factura
> > > suponete si no hay detalle no dejo que se inserte y lo controlo


desde
> aca.
> > >
> > > Tambien si programas en capas podrias poner esta logica de negocios


en
> la
> > > capa correspondiente por lo cual la cosa seria mas optima :-) tu
fijate
> > cual
> > > es mejor para tu diseño.
> > >
> > > Bye
> > >
> > >
> > > Salu2
> > >
> > > Maxi
> > >
> > > Desarrollador 3 estrellas .NET
> > > Buenos Aires - Argentina
> > >
> > > MSN:
> > >
> > > "Nelson Rodriguez" escribió en el mensaje
> > > news:OBHWr%
> > > > Desearía saber si hay alguna manera de evitar el Caso de tablas
> "Padre"
> > > sin
> > > > "Hijos"?
> > > > O en otras palabras "cabezales" sin "líneas".
> > > >
> > > > Gracias
> > > >
> > > > Nelson Rodriguez
> > > >
> > > > Salto - Uruguay
> > > >
> > > >
> > >
> > >
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004


Respuesta Responder a este mensaje
#7 Maximiliano Damian Accotto
28/05/2004 - 01:48 | Informe spam
Una excelente explicacion Carlos!! ahora si te he seguido :-)

Una cosita, como ves esto pero con Xml? o sea, tener un solo Store que
reciba todo el paquete en Xml, tanto detalle como cabecera y aca hacer el
control no.

Va esta alternativa la vi el otro dia implementada y la verdad que no me ha
desgradado tanto!! claro hay que hacer pasos en el medio y quizas la cosa se
ponga un poco mas lenta, pero lo que me gusto que el Store era aun mas
escalable porque siempre lee de un archivo.xml y sabras que este archivo lo
podes generar de donde quieras no!!

Bueno gracias nuevamente!!

Un abrazo


Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
En realidad no tengo código implementado, es más una idea que otra


cosa.
De todos modos consistiría en lo siguiente. Según la primera opción (dos
procedimientos) sería algo así:

- pa_almacenaLineaConCabecera -> tendría los parámetros de la cabecera
(tales como usuario creación, etc) y los de la línea (artículo solicitado,
partida del presupuesto a imputar, etc). El procedimiento crearía dentro


de
una transacción la cabecera y luego la línea y recogería tanto el código


de
cabecera como el de línea recién insertados en parámetros de salida
- pa_almacenaSoloLinea -> contendría el código de la cabecera al que
imputar la línea juntos con los datos propios de ésta. Devolvería el


código
de línea recién creada como parámetro de salida


Si no quisiéramos tener dos procedimientos para insertar los datos
(opción que no recomiendo porque complica la lógica y mantenimiento de
éste), tendríamos una cosa como la que sigue:

- pa_almacenaLineaConCabeceraSiempre -> cuando quisiéramos insertar la
primera línea de un pedido funcionaría como pa_almacenaLineaConCabecera,
pero cuando quisiéramos almacenar una línea a un pedido existente, todos


los
datos de la cabecera (menos el identificador de ésta, claro está) serían
NULL (o lo que se quisiera). El procedimiento tendría que controlar que si
se pasa un código de cabecera válido significa que los valores de la línea
que se pasan se quieren incorporar a dicha cabecera

Es una idea, ya digo. Yo, de implementar alguna de las dos, optaría


por
la primera porque su mantenimiento y sus llamadas son más sencillos. Con


la
segunda opción el único que sale ganando es el desarrollador, que se evita
tener que llamar a dos procedimientos distintos pero no el motor, que es


de
lo que se trata al fin y al cabo.

Espero haberme explicado


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Maxi" escribió en el mensaje
news:ecJoaq$
> Hola Carlos!! no entendi tu modelo :( serias tan amable de postiar un
> poquitin de codigo?
>
> gracias
>
>
> Salu2
> Maxi
> Buenos Aires - Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> Nunca consideres el estudio como una obligación sino como
> una oportunidad para penetrar en el bello y maravillosos
> mundo del saber.
> - Albert Einstein
>
>
>
> "Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
> news:%
> >
> > Bueno, todo eso que comentas se puede implementar en la lógica de


un
> > procedimiento almacenado. Podrías tener uno para insertar la primera
> línea,
> > en el que le tendrías que pasar los datos de la cabecera también,


menos
el
> > código de ésta, claro está, y este procedimiento te devolvería los
códigos
> > de cabecera y línea recién insertados (preferiblemente a través de
> > parámetros de retorno). El resto de las líneas las podrías insertar a
> través
> > de un procedimiento que sólo requiriera el identificador de la


cabecera,
> > aunque también lo podrías hacer en el mismo que te he comentado antes,
> > teniendo en cuenta que sólo iría el identificador de la cabecera a


NULL
> > cuando fueras a crear un nuevo pedido.
> >
> > El caso de eliminación es similar: tendrías que comprobar que si


se
> > borra la última línea, se elimine también la cabecera.
> >
> > Como verás, el hecho de manipular los datos a través de
procedimientos
> > almacenados da mucho más juego que unos simple INSERT o DELETE


lanzados
> > directamente desde la aplicación cliente. Eso sin tener en cuenta las
> otras
> > ventajas que poseen...
> >
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> > Se agradece la inclusión de sentencias DDL
> >
> >
> > "Nelson Rodriguez" escribió en el mensaje
> > news:
> > > Maxi, tambien si va eliminando líneas de una factura YA grabada
> > > anteriormente hasta dejarla sin líneas.
> > > Te pediría, si no tienes inconvenientes, me pasaras un ejemplo de


como
> tu
> > lo
> > > haces.
> > >
> > > Gracias
> > >
> > > "Maxi" escribió en el mensaje
> > > news:
> > > > Hola, si que es posible pero no de forma directa :(, todo


dependera
de
> > > como
> > > > este armado tu sistema pero yo por ej en mi Store de insert de una
> > factura
> > > > suponete si no hay detalle no dejo que se inserte y lo controlo
desde
> > aca.
> > > >
> > > > Tambien si programas en capas podrias poner esta logica de


negocios
en
> > la
> > > > capa correspondiente por lo cual la cosa seria mas optima :-) tu
> fijate
> > > cual
> > > > es mejor para tu diseño.
> > > >
> > > > Bye
> > > >
> > > >
> > > > Salu2
> > > >
> > > > Maxi
> > > >
> > > > Desarrollador 3 estrellas .NET
> > > > Buenos Aires - Argentina
> > > >
> > > > MSN:
> > > >
> > > > "Nelson Rodriguez" escribió en el mensaje
> > > > news:OBHWr%
> > > > > Desearía saber si hay alguna manera de evitar el Caso de tablas
> > "Padre"
> > > > sin
> > > > > "Hijos"?
> > > > > O en otras palabras "cabezales" sin "líneas".
> > > > >
> > > > > Gracias
> > > > >
> > > > > Nelson Rodriguez
> > > > >
> > > > > Salto - Uruguay
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
>
>


Respuesta Responder a este mensaje
#8 Carlos Sacristan
28/05/2004 - 08:13 | Informe spam
Jejeje... esa fue una de las opciones que sopesé cuando estuve
implementando una aplicación parecida a esta de pedidos que he comentado.

Bueno, ya sabes que una de las ventajas del xml es que recibes un sólo
parámetro pero que en realidad se puede despiezar en muchos datos
diferentes. ¿El coste?. Bueno, por un lado en la aplicación cliente tendrás
que realizar la transformación de los datos de pantalla a un xml válido y
luego en el servidor llamar a los procedimientos almacenados extendidos para
manejar ese xml e insertarlo en las tablas con el formato adecuado. Es
cuestión de valorarlo.

Yo lo he hecho así para otra aplicación y la verdad es que me gusta el
hecho (entre otras cosas) de no tener que hacer múltiples insert, sino una
sola instrucción INSERT tabla SELECT campo1 FROM ... Además he
comprobado que, al menos en mi caso, el rendimiento es muy bueno

También me gusta el hecho de que esta opción para SQL Server 2005 será
aún más rápida e integrada que como está actualmente ;-)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Maximiliano Damian Accotto" escribió en el
mensaje news:
Una excelente explicacion Carlos!! ahora si te he seguido :-)

Una cosita, como ves esto pero con Xml? o sea, tener un solo Store que
reciba todo el paquete en Xml, tanto detalle como cabecera y aca hacer el
control no.

Va esta alternativa la vi el otro dia implementada y la verdad que no me


ha
desgradado tanto!! claro hay que hacer pasos en el medio y quizas la cosa


se
ponga un poco mas lenta, pero lo que me gusto que el Store era aun mas
escalable porque siempre lee de un archivo.xml y sabras que este archivo


lo
podes generar de donde quieras no!!

Bueno gracias nuevamente!!

Un abrazo


Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
> En realidad no tengo código implementado, es más una idea que otra
cosa.
> De todos modos consistiría en lo siguiente. Según la primera opción (dos
> procedimientos) sería algo así:
>
> - pa_almacenaLineaConCabecera -> tendría los parámetros de la


cabecera
> (tales como usuario creación, etc) y los de la línea (artículo


solicitado,
> partida del presupuesto a imputar, etc). El procedimiento crearía dentro
de
> una transacción la cabecera y luego la línea y recogería tanto el código
de
> cabecera como el de línea recién insertados en parámetros de salida
> - pa_almacenaSoloLinea -> contendría el código de la cabecera al que
> imputar la línea juntos con los datos propios de ésta. Devolvería el
código
> de línea recién creada como parámetro de salida
>
>
> Si no quisiéramos tener dos procedimientos para insertar los datos
> (opción que no recomiendo porque complica la lógica y mantenimiento de
> éste), tendríamos una cosa como la que sigue:
>
> - pa_almacenaLineaConCabeceraSiempre -> cuando quisiéramos insertar


la
> primera línea de un pedido funcionaría como pa_almacenaLineaConCabecera,
> pero cuando quisiéramos almacenar una línea a un pedido existente, todos
los
> datos de la cabecera (menos el identificador de ésta, claro está) serían
> NULL (o lo que se quisiera). El procedimiento tendría que controlar que


si
> se pasa un código de cabecera válido significa que los valores de la


línea
> que se pasan se quieren incorporar a dicha cabecera
>
> Es una idea, ya digo. Yo, de implementar alguna de las dos, optaría
por
> la primera porque su mantenimiento y sus llamadas son más sencillos. Con
la
> segunda opción el único que sale ganando es el desarrollador, que se


evita
> tener que llamar a dos procedimientos distintos pero no el motor, que es
de
> lo que se trata al fin y al cabo.
>
> Espero haberme explicado
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> Por favor, responder únicamente al foro
> Se agradece la inclusión de sentencias DDL
>
>
> "Maxi" escribió en el mensaje
> news:ecJoaq$
> > Hola Carlos!! no entendi tu modelo :( serias tan amable de postiar un
> > poquitin de codigo?
> >
> > gracias
> >
> >
> > Salu2
> > Maxi
> > Buenos Aires - Argentina
> > Desarrollador Microsoft 3 Estrellas .NET
> > Nunca consideres el estudio como una obligación sino como
> > una oportunidad para penetrar en el bello y maravillosos
> > mundo del saber.
> > - Albert Einstein
> >
> >
> >
> > "Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
> > news:%
> > >
> > > Bueno, todo eso que comentas se puede implementar en la lógica


de
un
> > > procedimiento almacenado. Podrías tener uno para insertar la primera
> > línea,
> > > en el que le tendrías que pasar los datos de la cabecera también,
menos
> el
> > > código de ésta, claro está, y este procedimiento te devolvería los
> códigos
> > > de cabecera y línea recién insertados (preferiblemente a través de
> > > parámetros de retorno). El resto de las líneas las podrías insertar


a
> > través
> > > de un procedimiento que sólo requiriera el identificador de la
cabecera,
> > > aunque también lo podrías hacer en el mismo que te he comentado


antes,
> > > teniendo en cuenta que sólo iría el identificador de la cabecera a
NULL
> > > cuando fueras a crear un nuevo pedido.
> > >
> > > El caso de eliminación es similar: tendrías que comprobar que si
se
> > > borra la última línea, se elimine también la cabecera.
> > >
> > > Como verás, el hecho de manipular los datos a través de
> procedimientos
> > > almacenados da mucho más juego que unos simple INSERT o DELETE
lanzados
> > > directamente desde la aplicación cliente. Eso sin tener en cuenta


las
> > otras
> > > ventajas que poseen...
> > >
> > >
> > >
> > > Un saludo
> > >
> > > -
> > > "Sólo sé que no sé nada. " (Sócrates)
> > >
> > > Por favor, responder únicamente al foro
> > > Se agradece la inclusión de sentencias DDL
> > >
> > >
> > > "Nelson Rodriguez" escribió en el mensaje
> > > news:
> > > > Maxi, tambien si va eliminando líneas de una factura YA grabada
> > > > anteriormente hasta dejarla sin líneas.
> > > > Te pediría, si no tienes inconvenientes, me pasaras un ejemplo de
como
> > tu
> > > lo
> > > > haces.
> > > >
> > > > Gracias
> > > >
> > > > "Maxi" escribió en el mensaje
> > > > news:
> > > > > Hola, si que es posible pero no de forma directa :(, todo
dependera
> de
> > > > como
> > > > > este armado tu sistema pero yo por ej en mi Store de insert de


una
> > > factura
> > > > > suponete si no hay detalle no dejo que se inserte y lo controlo
> desde
> > > aca.
> > > > >
> > > > > Tambien si programas en capas podrias poner esta logica de
negocios
> en
> > > la
> > > > > capa correspondiente por lo cual la cosa seria mas optima :-) tu
> > fijate
> > > > cual
> > > > > es mejor para tu diseño.
> > > > >
> > > > > Bye
> > > > >
> > > > >
> > > > > Salu2
> > > > >
> > > > > Maxi
> > > > >
> > > > > Desarrollador 3 estrellas .NET
> > > > > Buenos Aires - Argentina
> > > > >
> > > > > MSN:
> > > > >
> > > > > "Nelson Rodriguez" escribió en el mensaje
> > > > > news:OBHWr%
> > > > > > Desearía saber si hay alguna manera de evitar el Caso de


tablas
> > > "Padre"
> > > > > sin
> > > > > > "Hijos"?
> > > > > > O en otras palabras "cabezales" sin "líneas".
> > > > > >
> > > > > > Gracias
> > > > > >
> > > > > > Nelson Rodriguez
> > > > > >
> > > > > > Salto - Uruguay
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
> >
> > Outgoing mail is certified Virus Free.
> > Checked by AVG anti-virus system (http://www.grisoft.com).
> > Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
> >
> >
>
>


Respuesta Responder a este mensaje
#9 Maxi
28/05/2004 - 14:17 | Informe spam
Gracias!!! la verdad que a mi tambien me habia gustado el modelo sobre todo
por la facilidad, performance y compatibilidad con todo!!

Un abrazo


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:

Jejeje... esa fue una de las opciones que sopesé cuando estuve
implementando una aplicación parecida a esta de pedidos que he comentado.

Bueno, ya sabes que una de las ventajas del xml es que recibes un sólo
parámetro pero que en realidad se puede despiezar en muchos datos
diferentes. ¿El coste?. Bueno, por un lado en la aplicación cliente


tendrás
que realizar la transformación de los datos de pantalla a un xml válido y
luego en el servidor llamar a los procedimientos almacenados extendidos


para
manejar ese xml e insertarlo en las tablas con el formato adecuado. Es
cuestión de valorarlo.

Yo lo he hecho así para otra aplicación y la verdad es que me gusta el
hecho (entre otras cosas) de no tener que hacer múltiples insert, sino una
sola instrucción INSERT tabla SELECT campo1 FROM ... Además he
comprobado que, al menos en mi caso, el rendimiento es muy bueno

También me gusta el hecho de que esta opción para SQL Server 2005 será
aún más rápida e integrada que como está actualmente ;-)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Maximiliano Damian Accotto" escribió en e


l
mensaje news:
> Una excelente explicacion Carlos!! ahora si te he seguido :-)
>
> Una cosita, como ves esto pero con Xml? o sea, tener un solo Store que
> reciba todo el paquete en Xml, tanto detalle como cabecera y aca hacer


el
> control no.
>
> Va esta alternativa la vi el otro dia implementada y la verdad que no me
ha
> desgradado tanto!! claro hay que hacer pasos en el medio y quizas la


cosa
se
> ponga un poco mas lenta, pero lo que me gusto que el Store era aun mas
> escalable porque siempre lee de un archivo.xml y sabras que este archivo
lo
> podes generar de donde quieras no!!
>
> Bueno gracias nuevamente!!
>
> Un abrazo
>
>
> Salu2
>
> Maximiliano Damian Accotto
> Gerente de IT
> Fundicion San Cayetano S.A.
> Buenos Aires Argentina
> -
> maxi_accotto[arroba]speedy[.]com[.].ar
> MSN:
>
>
>
> "Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
> news:
> > En realidad no tengo código implementado, es más una idea que otra
> cosa.
> > De todos modos consistiría en lo siguiente. Según la primera opción


(dos
> > procedimientos) sería algo así:
> >
> > - pa_almacenaLineaConCabecera -> tendría los parámetros de la
cabecera
> > (tales como usuario creación, etc) y los de la línea (artículo
solicitado,
> > partida del presupuesto a imputar, etc). El procedimiento crearía


dentro
> de
> > una transacción la cabecera y luego la línea y recogería tanto el


código
> de
> > cabecera como el de línea recién insertados en parámetros de salida
> > - pa_almacenaSoloLinea -> contendría el código de la cabecera al


que
> > imputar la línea juntos con los datos propios de ésta. Devolvería el
> código
> > de línea recién creada como parámetro de salida
> >
> >
> > Si no quisiéramos tener dos procedimientos para insertar los datos
> > (opción que no recomiendo porque complica la lógica y mantenimiento de
> > éste), tendríamos una cosa como la que sigue:
> >
> > - pa_almacenaLineaConCabeceraSiempre -> cuando quisiéramos


insertar
la
> > primera línea de un pedido funcionaría como


pa_almacenaLineaConCabecera,
> > pero cuando quisiéramos almacenar una línea a un pedido existente,


todos
> los
> > datos de la cabecera (menos el identificador de ésta, claro está)


serían
> > NULL (o lo que se quisiera). El procedimiento tendría que controlar


que
si
> > se pasa un código de cabecera válido significa que los valores de la
línea
> > que se pasan se quieren incorporar a dicha cabecera
> >
> > Es una idea, ya digo. Yo, de implementar alguna de las dos,


optaría
> por
> > la primera porque su mantenimiento y sus llamadas son más sencillos.


Con
> la
> > segunda opción el único que sale ganando es el desarrollador, que se
evita
> > tener que llamar a dos procedimientos distintos pero no el motor, que


es
> de
> > lo que se trata al fin y al cabo.
> >
> > Espero haberme explicado
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> > Se agradece la inclusión de sentencias DDL
> >
> >
> > "Maxi" escribió en el mensaje
> > news:ecJoaq$
> > > Hola Carlos!! no entendi tu modelo :( serias tan amable de postiar


un
> > > poquitin de codigo?
> > >
> > > gracias
> > >
> > >
> > > Salu2
> > > Maxi
> > > Buenos Aires - Argentina
> > > Desarrollador Microsoft 3 Estrellas .NET
> > > Nunca consideres el estudio como una obligación sino como
> > > una oportunidad para penetrar en el bello y maravillosos
> > > mundo del saber.
> > > - Albert Einstein
> > >
> > >
> > >
> > > "Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el


mensaje
> > > news:%
> > > >
> > > > Bueno, todo eso que comentas se puede implementar en la lógica
de
> un
> > > > procedimiento almacenado. Podrías tener uno para insertar la


primera
> > > línea,
> > > > en el que le tendrías que pasar los datos de la cabecera también,
> menos
> > el
> > > > código de ésta, claro está, y este procedimiento te devolvería los
> > códigos
> > > > de cabecera y línea recién insertados (preferiblemente a través de
> > > > parámetros de retorno). El resto de las líneas las podrías


insertar
a
> > > través
> > > > de un procedimiento que sólo requiriera el identificador de la
> cabecera,
> > > > aunque también lo podrías hacer en el mismo que te he comentado
antes,
> > > > teniendo en cuenta que sólo iría el identificador de la cabecera a
> NULL
> > > > cuando fueras a crear un nuevo pedido.
> > > >
> > > > El caso de eliminación es similar: tendrías que comprobar que


si
> se
> > > > borra la última línea, se elimine también la cabecera.
> > > >
> > > > Como verás, el hecho de manipular los datos a través de
> > procedimientos
> > > > almacenados da mucho más juego que unos simple INSERT o DELETE
> lanzados
> > > > directamente desde la aplicación cliente. Eso sin tener en cuenta
las
> > > otras
> > > > ventajas que poseen...
> > > >
> > > >
> > > >
> > > > Un saludo
> > > >
> > > > -
> > > > "Sólo sé que no sé nada. " (Sócrates)
> > > >
> > > > Por favor, responder únicamente al foro
> > > > Se agradece la inclusión de sentencias DDL
> > > >
> > > >
> > > > "Nelson Rodriguez" escribió en el mensaje
> > > > news:
> > > > > Maxi, tambien si va eliminando líneas de una factura YA grabada
> > > > > anteriormente hasta dejarla sin líneas.
> > > > > Te pediría, si no tienes inconvenientes, me pasaras un ejemplo


de
> como
> > > tu
> > > > lo
> > > > > haces.
> > > > >
> > > > > Gracias
> > > > >
> > > > > "Maxi" escribió en el mensaje
> > > > > news:
> > > > > > Hola, si que es posible pero no de forma directa :(, todo
> dependera
> > de
> > > > > como
> > > > > > este armado tu sistema pero yo por ej en mi Store de insert de
una
> > > > factura
> > > > > > suponete si no hay detalle no dejo que se inserte y lo


controlo
> > desde
> > > > aca.
> > > > > >
> > > > > > Tambien si programas en capas podrias poner esta logica de
> negocios
> > en
> > > > la
> > > > > > capa correspondiente por lo cual la cosa seria mas optima :-)


tu
> > > fijate
> > > > > cual
> > > > > > es mejor para tu diseño.
> > > > > >
> > > > > > Bye
> > > > > >
> > > > > >
> > > > > > Salu2
> > > > > >
> > > > > > Maxi
> > > > > >
> > > > > > Desarrollador 3 estrellas .NET
> > > > > > Buenos Aires - Argentina
> > > > > >
> > > > > > MSN:
> > > > > >
> > > > > > "Nelson Rodriguez" escribió en el mensaje
> > > > > > news:OBHWr%
> > > > > > > Desearía saber si hay alguna manera de evitar el Caso de
tablas
> > > > "Padre"
> > > > > > sin
> > > > > > > "Hijos"?
> > > > > > > O en otras palabras "cabezales" sin "líneas".
> > > > > > >
> > > > > > > Gracias
> > > > > > >
> > > > > > > Nelson Rodriguez
> > > > > > >
> > > > > > > Salto - Uruguay
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> > >
> > > Outgoing mail is certified Virus Free.
> > > Checked by AVG anti-virus system (http://www.grisoft.com).
> > > Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
> > >
> > >
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.688 / Virus Database: 449 - Release Date: 18/05/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida