Validaciones

Iniciado por piwi, 5 Julio 2010, 20:58 PM

0 Miembros y 1 Visitante están viendo este tema.

[D4N93R]

Cual es el origen de datos de ese formulario?

piwi

No entiendo la pregunta  >:( El origen es una tabla de la base de datos. Todo me funciona bien pero lo que quiero es que cuando de al boton nuevo, saber que evento se produce justo despues de insertar el nuevo registro para que cuando asigne un id a la caja de texto, esta sea del registro recien insertado.

[D4N93R]

"El origen es una tabla de la base de datos"
Ok, pero cuando guardas un registro en la base de datos, lo haces a mano, o utilizas un SqlDataSource?

"Todo me funciona bien pero lo que quiero es que cuando de al boton nuevo, saber que evento se produce justo despues de insertar el nuevo registro"
Después de insertarlo en la base de datos? o despuès de darle click a nuevo?

"para que cuando asigne un id a la caja de texto, esta sea del registro recien insertado."
  Entonces el evento que quieres es después de darle click al botón nuevo, antes de darle a guardar?

piwi

lo que he hecho es crear y arrastrar el origen de datos al formulario por lo que me ha creado todo automaticamente.
Por un lado la barra de navegacion en la parte superior y los campos sueltos enlazado al origen de datos.
Donde codifico la asignación del valor para que al dar al boton nuevo (+ amarillo) pueda asignar un valor a un campo del nuevo registro'

Imagina un origen de datos id_campo, campo. Estos dos los tengo en el formulario enlazados como he comentado arriba. Cuando doy al boton nuevo me crea un registro nuevo, donde tengo que codificar id_campo.text = contador? para que asigne la variable contador al id_campo del nuevo registro?

Un saludol

[D4N93R]

Bueno, primero, hubieses solucionado todo esto si usaras Identity en el Primary Key, pero bueno, veamos, debe haber un objeto llamado ALGOBindingSource que tiene un evento al cual te tienes que subscribir: AddingNew y colocar algo así:

Código (csharp) [Seleccionar]

  private void bindingSource1_AddingNew(object sender, AddingNewEventArgs e)
  {
        e.NewObject = ((System.Data.DataView)(bindingSource1.List)).AddNew();
        ((System.Data.DataRowView)(e.NewObject))["Columna1"] = "123";
  }


Ahí lo que haces es reemplazar los nombres de los objetos por los de tu formulario, y en vez de poner "123", pones tu contador.

Saludos

piwi

Gracias por la respuesta.

El evento que me comentas me hace lo mismo que el BindingNavigatorAddNewItem_Click, es decir, en este evento he puesto un mensaje y la asignación.


    Private Sub LICENCIASBindingSource_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles LICENCIASBindingSource.AddingNew

        IDLICENCIATextBox.Text = "300"
        MsgBox("hola")

    End Sub


Abro el formulario y me aparecen los campos. Por defecto estoy en el primer registro y cuando doy al nuevo, me pone 300 en el registro actual, me muestra el mensaje y luego me inserta registro nuevo por lo que idlicencia esta vacía.

Yo lo que quiero es que primero inserte nuevo registro y en este que me inserte 300 en idlicenciatextbox.

Estoy hasta los  :-X

[D4N93R]

Pero hazlo como yo te dije, usando el AddingNewEventArgs... No colocando valor a la caja de texto.

piwi


[D4N93R]

Código (csharp) [Seleccionar]


private void bindingSource1_AddingNew(object sender, AddingNewEventArgs e)
  {
          //en vez de bindingsource1 pones el nombre de tu bindingsource, es un control que esta abajo del formulario
        e.NewObject = ((System.Data.DataView)(bindingSource1.List)).AddNew();
        ((System.Data.DataRowView)(e.NewObject))["Columna1"] = "123"; // aki pones tu contador
        //reemplaza "Columna1" con el nombre de la columna del donde va el contador, el ID ese.
  }



A ver si así está mejor.