SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: black_hat en Lunes 24 de Septiembre de 2007, 07:56
-
Hola gente, mi problema es el siguiente. Tengo un procedimiento almacenado que hace el ABM (alta, baja, modificacion) de provincias, el procedimiento esta parametrizado, los parametros son, Accion, idPcia, Nombre. Si recibe accion = 'a' realiza una alta, ya se imaginan que tiene que recibir para una baja y una modif ...jaja Cuando realizo una baja o una modificacion no hay problemas, por ejemplo una baja o una modif podria ser asi
Accion = 'm'
dPcia= 1
Nombre = 'Corrientes'
Lo que modificaria el nombre de la provincia con id=1 a Corrientes.
el problema es cuando quiero hacer una alta. ya que idPcia en mi base de datos no puede ser Null.
Lo soluciono supuestamente con esto
New System.Nullable(Of Integer)(CType(txtIdPcia.Text, Integer))
Pero me da el siguiente error.
La conversion de la cadena "" en el tipo integer no es valida.
Pero entonces como puedo hacer para dar de alta una provincia, sin pasarle el parametro idPcia, ya que en mi base de datos lo tengo como autoincrement.
El codigo completo es el siguiente
Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
Try
Me.provinciasAbmTableAdapter.Fill(Me.ProvinciasForm.provinciasAbm, txtAccion.Text, New System.Nullable(Of Integer)(CType(txtIdPcia.Text, Integer)), txtNombre.Text)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
Desde ya muchas gracias
-
A ver si te entendi bien en el procedimiento almacenado tienes definidos tres casos insert, delete, update no.
Para el delete necesitas el dPcia para borrar la provincia que coincida con ese codigo
Para actualizar lo mismo, lo necesitas para actualizar el registro que coincida con el.
Pero para el insert, no lo necesitas si lo tienes que se autoincremente y como es asi no tiene porque ser nulo, sino cualquier valor,es decir, le puedes dar un 0 o el que quieras ya que no te va a repetir el codigo porque es autoincrementable.
Un saludo
-
Solucionado! con la funcion Va(), anda y no necesito la funcion Ctype, ya que VAL(TextBox1.Text) devuelve un integer. Igualmente ya lo hice de otra manera con un comboBox para seleccionar una provincia, que me despliegue las ciudades de esa provincia, por si a alguien le interesa el Codigo de lo que acabo de comentar es el siguiente.
Me.ClienteabmTableAdapter.Fill(Me.ClienteDS.clienteabm, "a", Me.idCliente, Me.ApellidoTextBox.Text, Me.NombreTextBox.Text, Me.DniTextBox.Text, Me.DirTextBox.Text, Me.TelTextBox.Text, Me.CeluTextBox.Text, Me.EmailTextBox.Text, Me.cmbPcia.SelectedValue, Me.cmbCiudad.SelectedValue)
me.idCliente es una variable que le asigno el idCliente desde otro formulario.
Eso si tuve que cambiarle algunas propiedades del comboBox, y poner Ciudad y Provincias en el mismo dataSet. SAludos