Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   Como meto un valor en un nuevo registro del dataset (http://www.forosdelweb.com/f29/como-meto-valor-nuevo-registro-del-dataset-352329/)

moNTeZIon 23/11/2005 11:39

Como meto un valor en un nuevo registro del dataset
 
Hola de nuevo,

Tengo un DataGrid, con una columna que al posicionarse encima el cursor, aparece un combobox para seleccionar un dato, que al ser seleccionado, se guarda en el registro en cuestion.

Esto funciona bien cuando se trata de modificr un registro existente, ya que con este código:
Código:

miDataSet.Tables("Urgencias").Rows(Me.BindingContext(miDataSet, "Urgencias").Position).Item("Cliente") = txtComboCliente.SelectedValue
Lo que hago es grabar el dato seleccionado del combo en la columna del dataset correspondiente, en la posicion de registro que se encuentre.

El problema viene cuando se está creando un registro nuevo, ya que me indica que la posicion no existe. Imagino que tiene razón, ya que estoy en una posición que hasta que no lo grabe, no existe.

Como podría solucionar este problema?

Muchas gracias.

xknown 23/11/2005 13:54

Hmm, lo veo un poco raro la forma como estás trabajando, puedes enviar más código?

Saludos

chcma 23/11/2005 14:07

Me imagino que previamente tendrás que crear un DataRow nuevo en el datatable del DataSet.

Actualizar el Grid y te aparecerá el nuevo registro en blanco en el Grid y ya podrás editarlo.

moNTeZIon 24/11/2005 02:41

Hola,
pues la verdad, ese es el unico codigo que tengo en ese evento.
En el "On _Selected_Index_Changed_ del combobox" solo tengo esa linea.

chcma, no entiendo muy bien tu idea. Ese problema ocurre al hacer el addnew. El tema es que Position me esta devolviendo un numero una unidad mayor que el maximo del dataset. Parece ser que en el dataset todavia no existe el nuevo registro al hacer el addnew, pero si en el Bindingcontext, porqué el tio devuelve bien la Posicion.

xknown, qué codigo te pongo? el FormLoad?

Jose_minglein2 24/11/2005 03:01

El código lo veo correcto siempre y cuando como dice chcma estés editando, debería poner una condicion:

if edicion
tucode
else
dim mirow as datarow = dataset.datable.newrow()
mirow(dato)= midato
dataset.datatable.addrow(mirow)
end if

entiendes lo que quiero decir????

moNTeZIon 24/11/2005 06:40

OK Jose. Voy a probar lo que me dices pero se me escapa algo...

tu variable "edicion" que es? como la creas?
Cuando el usuario pulsa en "Nuevo", en ese momento la pongo a false?
O tengo la forma de saber si se esta editando o no en ese punto?

Gracias.

Jose_minglein2 24/11/2005 06:50

claro sería por ejemplo un booleano que marca si se está en edición o no, ya como lo implementes dependerá de ti. Yo p.ej. hago que si se pulsa en nuevo a false y si se pulsa sobre editar en algún campo del listado a true (yo no dejo que se edita sin decir primero que se va a editar)

moNTeZIon 24/11/2005 07:09

Buena idea jose. Pero en mi grid se puede editar permanentemente.

Pero mira, acabo de dar con una solucion que no se si será lo más correcto, pero ahora si funciona:

Sustituyo la linea de arriba por esta:

Código:

miDatagrid(miDataGrid.CurrentCell.RowNumber, miDataGrid.CurrentCell.ColumnNumber) = txtComboCliente.SelectedValue
O sea, en vez de meter el dato en el dataset lo meto en la celda del datagrid.

Le veis algun problema?

Gracias y un saludo.


La zona horaria es GMT -6. Ahora son las 09:24.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.