Dos problemas

14/06/2007 - 17:54 por Jose M. Fos | Informe spam
Hola a todos.

Estoy desarrollando una sencilla aplicación en ASP .NET utilizando Visual
Studio .NET 2003, y como veréis no estoy muy ducho en el tema. A continuación
os resumo los problemas:

1.- He creado un datagrid, con la siguiente configuración de columnas:

<asp:TemplateColumn HeaderText="Cod.Principal">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.CodigoPrincipal")%> <br>
<font color="#009900">
<%# DataBinder.Eval(Container, "DataItem.G_CodigoArticulo") %>
</font>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cod.Alternativo">
<ItemTemplate>
<%# DataBinder.Eval(Container, "DataItem.CodigoAlternativo")%><br>
<font color="#009900">
<%# DataBinder.Eval(Container, "DataItem.G_CodigoAlternativo") %>
</font>
</ItemTemplate>
</asp:TemplateColumn>
..
De este modo consigo que las columnas tengan 'dos líneas'. El problema es
que he añadido una columna 'checkbox' de selección y ahora quiero obtener los
datos en la segunda línea de todas aquellas filas seleccionadas y no se como
hacerlo.

Hasta ahora lo hacía con Datagrid1.Items(i).cells(x).Tex para las columnas
simples, pero con estas no funciona.


2.- Esta misma aplicación sirve para crear registros en un servidor SQL que
no está dentro de la red de área local. Para la creación de dichos registros
creo un SQLDataAdapter, cargo todos los datos desde el servidor remoto, añado
los nuevos y hago un Update contra la base de datos del mismo. Claro, como
tiene que cargar unas 25.000 referencias a traves de una conexión lenta, el
proceso es un poco costoso.

¿Se os ocurre alguna idea para agilizar el proceso? Yo he pensado en cargar
los registros en local y crear un servicio de windows que periódicamente
vuelque la información en el servidor 'Activo', de manera transparente al
usuario, pero seguro que existe algún modo más sencillo de hacerlo y que no
implique la creación de registros en diferido.


Saludos y gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
15/06/2007 - 07:12 | Informe spam
"Jose M. Fos" wrote in message
news:
[...] Para la creación de dichos registros
creo un SQLDataAdapter, cargo todos los datos desde el servidor remoto,
añado
los nuevos y hago un Update contra la base de datos del mismo. Claro, como
tiene que cargar unas 25.000 referencias a traves de una conexión lenta,
el
proceso es un poco costoso.



No lo entiendo. Si solo quieres añadir registros nuevos, ¿para qué
cargas los 25000 existentes? Basta que crees un datset con los registros
nuevos y hagas el Update, no veo la razón de traer primero los registros
existentes.
Respuesta Responder a este mensaje
#2 Jose M. Fos
15/06/2007 - 08:41 | Informe spam
"Alberto Poblacion" wrote:

"Jose M. Fos" wrote in message
news:
> [...] Para la creación de dichos registros
> creo un SQLDataAdapter, cargo todos los datos desde el servidor remoto,
> añado
> los nuevos y hago un Update contra la base de datos del mismo. Claro, como
> tiene que cargar unas 25.000 referencias a traves de una conexión lenta,
> el
> proceso es un poco costoso.

No lo entiendo. Si solo quieres añadir registros nuevos, ¿para qué
cargas los 25000 existentes? Basta que crees un datset con los registros
nuevos y hagas el Update, no veo la razón de traer primero los registros
existentes.





Hola Alberto.

Si no cargo los registros de la base de datos, como puedo comprobar las
restricciones de integridad antes de insertar los registros nuevos?

Saludos.
Respuesta Responder a este mensaje
#3 Juan Diego Bueno
15/06/2007 - 13:28 | Informe spam
Muy simple José M. Cuando vulneras cualquier restricción de integridad
(siempre que esté bien diseñada la base de datos), lanzará una SQLException
en cuyo cuerpo va a contener el nombre de la constraint que vulneras. Si ese
mensaje contiene por ejemplo PK_Mitabla, ya sabes que se vulnera la clave
principal, y lanzas el aviso correspondiente.

Yo para insertar registros lo que hago es un select a esa tabla con un where
a la clave principal. Por ejemplo, si quiero insertar una persona y la clave
es el NIF, hago un select * where NIF=NIFdadoporelusuario. Si me devuelve un
registro, mando un mensaje para que lo cambie, y devuelve 0, tengo el
datatatable con ningún registro pero si con la estructura de la tabla. A
partir de ahí hago un datatable.newrow con la nueva et voilá... Así no he
tenido que cargar todos los registros para añadir uno.

Espero que te sirva

Saludos

http://www.moondance.tk
"Jose M. Fos" escribió en el mensaje
news:


"Alberto Poblacion" wrote:

"Jose M. Fos" wrote in message
news:
> [...] Para la creación de dichos registros
> creo un SQLDataAdapter, cargo todos los datos desde el servidor remoto,
> añado
> los nuevos y hago un Update contra la base de datos del mismo. Claro,
> como
> tiene que cargar unas 25.000 referencias a traves de una conexión
> lenta,
> el
> proceso es un poco costoso.

No lo entiendo. Si solo quieres añadir registros nuevos, ¿para qué
cargas los 25000 existentes? Basta que crees un datset con los registros
nuevos y hagas el Update, no veo la razón de traer primero los registros
existentes.





Hola Alberto.

Si no cargo los registros de la base de datos, como puedo comprobar las
restricciones de integridad antes de insertar los registros nuevos?

Saludos.

Respuesta Responder a este mensaje
#4 Jose M. Fos
15/06/2007 - 15:45 | Informe spam
Hola Juan Diego.

En primer lugar gracias por tu respuesta y disculpa mi ignorancia. Entiendo
que cuando hagas el Update será cuando se generen las excepciones. Mi
pregunta es: ¿se genera una excepción por cada línea que falla, o una general?

Saludos.


"Juan Diego Bueno" wrote:

Muy simple José M. Cuando vulneras cualquier restricción de integridad
(siempre que esté bien diseñada la base de datos), lanzará una SQLException
en cuyo cuerpo va a contener el nombre de la constraint que vulneras. Si ese
mensaje contiene por ejemplo PK_Mitabla, ya sabes que se vulnera la clave
principal, y lanzas el aviso correspondiente.

Yo para insertar registros lo que hago es un select a esa tabla con un where
a la clave principal. Por ejemplo, si quiero insertar una persona y la clave
es el NIF, hago un select * where NIF=NIFdadoporelusuario. Si me devuelve un
registro, mando un mensaje para que lo cambie, y devuelve 0, tengo el
datatatable con ningún registro pero si con la estructura de la tabla. A
partir de ahí hago un datatable.newrow con la nueva et voilá... Así no he
tenido que cargar todos los registros para añadir uno.

Espero que te sirva

Saludos

http://www.moondance.tk
"Jose M. Fos" escribió en el mensaje
news:
>
>
> "Alberto Poblacion" wrote:
>
>> "Jose M. Fos" wrote in message
>> news:
>> > [...] Para la creación de dichos registros
>> > creo un SQLDataAdapter, cargo todos los datos desde el servidor remoto,
>> > añado
>> > los nuevos y hago un Update contra la base de datos del mismo. Claro,
>> > como
>> > tiene que cargar unas 25.000 referencias a traves de una conexión
>> > lenta,
>> > el
>> > proceso es un poco costoso.
>>
>> No lo entiendo. Si solo quieres añadir registros nuevos, ¿para qué
>> cargas los 25000 existentes? Basta que crees un datset con los registros
>> nuevos y hagas el Update, no veo la razón de traer primero los registros
>> existentes.
>>
>>
>
> Hola Alberto.
>
> Si no cargo los registros de la base de datos, como puedo comprobar las
> restricciones de integridad antes de insertar los registros nuevos?
>
> Saludos.
>



Respuesta Responder a este mensaje
#5 Juan Diego Bueno
15/06/2007 - 16:06 | Informe spam
La verdad es que no lo he probado con un grid, por ejemplo, pero supongo que
eche para atrás toda la transacción. Compruébalo. Yo no tengo problemas
porque cada inserción la hago de una en una.

Saludos


"Jose M. Fos" escribió en el mensaje
news:
Hola Juan Diego.

En primer lugar gracias por tu respuesta y disculpa mi ignorancia.
Entiendo
que cuando hagas el Update será cuando se generen las excepciones. Mi
pregunta es: ¿se genera una excepción por cada línea que falla, o una
general?

Saludos.


"Juan Diego Bueno" wrote:

Muy simple José M. Cuando vulneras cualquier restricción de integridad
(siempre que esté bien diseñada la base de datos), lanzará una
SQLException
en cuyo cuerpo va a contener el nombre de la constraint que vulneras. Si
ese
mensaje contiene por ejemplo PK_Mitabla, ya sabes que se vulnera la clave
principal, y lanzas el aviso correspondiente.

Yo para insertar registros lo que hago es un select a esa tabla con un
where
a la clave principal. Por ejemplo, si quiero insertar una persona y la
clave
es el NIF, hago un select * where NIF=NIFdadoporelusuario. Si me devuelve
un
registro, mando un mensaje para que lo cambie, y devuelve 0, tengo el
datatatable con ningún registro pero si con la estructura de la tabla. A
partir de ahí hago un datatable.newrow con la nueva et voilá... Así no he
tenido que cargar todos los registros para añadir uno.

Espero que te sirva

Saludos

http://www.moondance.tk
"Jose M. Fos" escribió en el mensaje
news:
>
>
> "Alberto Poblacion" wrote:
>
>> "Jose M. Fos" wrote in message
>> news:
>> > [...] Para la creación de dichos registros
>> > creo un SQLDataAdapter, cargo todos los datos desde el servidor
>> > remoto,
>> > añado
>> > los nuevos y hago un Update contra la base de datos del mismo.
>> > Claro,
>> > como
>> > tiene que cargar unas 25.000 referencias a traves de una conexión
>> > lenta,
>> > el
>> > proceso es un poco costoso.
>>
>> No lo entiendo. Si solo quieres añadir registros nuevos, ¿para qué
>> cargas los 25000 existentes? Basta que crees un datset con los
>> registros
>> nuevos y hagas el Update, no veo la razón de traer primero los
>> registros
>> existentes.
>>
>>
>
> Hola Alberto.
>
> Si no cargo los registros de la base de datos, como puedo comprobar las
> restricciones de integridad antes de insertar los registros nuevos?
>
> Saludos.
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida