Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - piwi

#41
Gracias por las respuestas.

Os pongo un ejemplo. Creo una tabla llamada personas cuyos campos son dni, nombre, apellido. Como el campo DNI es único entonces lo pongo como la clave primaria. Por una lado porque haré busquedas por él y por otro lado que no puede ser nulo y nunca será duplicado.
Teniendo la BD lista ahora desde el vb creo un origen de datos y lo arrastro al formulario en forma de campos sueltos (modo detalle y no datagridview).
Hasta aquí no he hecho nada, y vb me ha creado los tres campos: dni, nombre y appelido enllazados a datos, un bindingsource, un tableadapter, tableadaptermanager y bindingnavigator. Además de eso utilizo un ErrorProvider para mostrar los posibles mensajes de error.
Lo que me queda es realizar las validaciones para que no me salte una excepcion que que el campo dni es único y que no esté duplicado, es ahí donde he intentado realizarlo a nivel de dataset como dice aquí http://msdn.microsoft.com/es-es/library/ms171930 pero me he encontrado con el problema que pongo en el primer post.
Otra duda que tengo, automáticamente me ha creado el código en en evento saveitem_click de bindingnavigator que ahí puedo realizar los chequeos pero el problema está que también está guardadondo automaticamente cuando doy a las flechas para cambiar de registro o cuando doy a un nuevo registro.
En definitiva, lo que quiero hacer es chequear que el campo dni no esté vacío ni que esté duplicado, donde lo tengo que hacer, a nivel de dataset, en validación del campo?
#42
Hola.

Me he encontrado con este manual como validar los conjuntos de datos.

http://msdn.microsoft.com/es-es/library/ms171930(v=VS.80).aspx

La validación la hago sobre un campo que es PK y busco si ya existe en la base de datos. Al probarlo me funciona y me muestra el mensaje de error que ya existe este valor pero al dar a guardar sigue intentando guardar los cambios y me da error de clave duplicada.

Para solventarlo he hecho lo siguiente (que me parece una chapuza) en el BindingNavigatorSaveItem_Click

If String.IsNullOrEmpty(ErrorProvider1.GetError(IDTextBox)) Then
        Me.Validate()
        Me.LICENCIASBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.LicenciasDataSet)
else
   msgbox("Existen errores")
end if

Faltaría algo de código para controlar los errores, esta como a medias, aunque me muestre el error, sigue con la grabación.

La solución de arriba me funciona cuando es el boton guardar pero si le doy al nuevo o a las flechas de navegación también guarda los valores automaticamente, donde están el código que guarda los datos por ejemplo al dar al botón nuevo?

Gracias de antemano.

#43
.NET (C#, VB.NET, ASP) / Estado de registro
27 Julio 2010, 08:42 AM
Hola a todos.

Existe alguna forma de saber el estado de un registro? Me refiero si es nuevo, modifcado etc.

Mi problema que estoy haciendo un chequeo si un campo ya existe en la base de datos. Si el registro es nuevo lo tengo que chequear pero si es una modificación, entonces no tengo que mirarlo.

Lo estoy haciendo con unos textbox enlazados a datos.

Un saludo
#44
Cita de: Ari-Slash en 23 Julio 2010, 19:43 PM
la verdad nose si se puede xD

pero puedes hacer una tabla que tenga las configuraciones que quieres y hacer una subconsulta en el where



Tengo una consulta ente fechas dos una subconsulta que esta totalizando entre fechas por lo que no puedo hacerlo como me estás diciendo.
#45
La consulta devuelve x registros dependiendo de las fechas
#46
Quizá sea una pregunta muy tonta pero cual es la mejor forma de meter una consulta sql dentro del código para utilizarla con un dataset?

Estoy escribiendo una con parametros de fechas

DECLARE @FECHA_INI AS DATETIME
DECLARE @FECHA_FIN AS DATETIME

SET @FECHA_INI = '2010-04-01'
SET @FECHA_FIN = '2010-04-30'

SELECT .....



WHERE FECHA BETWEEN @FECHA_INI AND @FECHA_FIN

Se puede guardarlas en la base de datos (sqlserver) y llamarla desde vb.net?

Un saludo.
#47
.NET (C#, VB.NET, ASP) / Re: Validaciones
23 Julio 2010, 18:52 PM
Me he perdido  :huh:
#48
.NET (C#, VB.NET, ASP) / Re: Validaciones
23 Julio 2010, 07:53 AM
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
#49
.NET (C#, VB.NET, ASP) / Re: Validaciones
22 Julio 2010, 22:49 PM
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
#50
.NET (C#, VB.NET, ASP) / Re: Validaciones
22 Julio 2010, 18:49 PM
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.