1. Hola, tengo un problema. Estoy haciendo un mantenimiento en capas usando visual studio 2008 y sql server 2008.
Tengo un formulario llamado mantEmpleados (mantenimiento de empleados), textboxs para ingresar / mostrar datos y botones para ingresar un
"Nuevo" registro, "Grabar", etc.
He creado un procedimiento en SQL Server el cual va a generar un codigo creciente a partir del ultimo numero en el campo CodEmp (codigo
empleado), es decir: si encuentra el ultimo EMP001, el procedimiento generara el siguiente que seria EMP002. Hasta ahi todo va normal.
El problema se presenta cuando paso a las capas, primero pongo la funcion en la capa DATOS, luego paso a NEGOCIO y al final cuando deseo que
al hacer click en el boton "NUEVO" se muestre unicamente el codigo nuevo que ha generado, no muestra nada y queda en blanco.
Cabe decir que para borrar todo estoy usando un for each control txtbox.
Recalco que al momento de hacer click en NUEVO quiero que se cargue el codigo generado en el "tbcodigo.text"
Les pongo el codigo tanto del sql como del vb y agradezco desde ya su ayuda.
Script de SQL:
use TomyShop
go
Create Proc ListarEmpleados
as
select * from Empleados
go
Create Proc GrabarEmpleados
@Nombres nvarchar(100),
@Cargo nvarchar(50),
@Planilla nvarchar(2),
@Direccion nvarchar(100),
@Pais nvarchar(60),
@Ciudad nvarchar(60),
@Dni int,
2. @Telefono nvarchar(20),
@Celular nvarchar(20),
@Email nvarchar(100),
@Sexo nvarchar(9),
@FIngreso date,
@FSalida date,
@Nhijos int,
@FNacimiento date,
@Edad int,
@Sueldo decimal(6,2),
@Imagen image
as
declare @CodEmp nvarchar(7)
set @CodEmp=(select 'EMP'+ right('000'+ltrim(right(MAX(CodEmp),2)+1),3) from Empleados)
insert into Empleados
values(@CodEmp,@Nombres,@Cargo,@Planilla,@Direccion,@Pais,@Ciudad,@Dni,@Telefono,@Celular,@Email,@Sexo,@FIngreso,@FSalida,@Nhijos,@F
Nacimiento,@Edad,@Sueldo,@Imagen)
go
exec grabarempleados 'Andres Lopez Casereso','Ayudante','SI','Jr. Polacal
312','Perú','Lima',41657464,'3224986','924589403','andrelope@gmail.com','Masculino','01/02/2004','',1,'10/01/1982',30,1600.00,''
go
Create Proc GenerarCodEmp
as
select 'EMP'+ right('000'+ltrim(right (MAX(CodEmp),2)+1),3) from Empleados
go
Capa DATOS: classdatos.vb
Imports System.Data.SqlClient
Imports Microsoft.ApplicationBlocks.Data
Imports Entidad
Public Class classdatos
Dim cn As New SqlConnection("Server=.; Integrated security=sspi; database=TomyShop")
Public Function generarcodemp() As String
Return SqlHelper.ExecuteNonQuery(cn, "generarcodemp")
3. End Function
Public Function listarempleados() As DataTable
Return SqlHelper.ExecuteDataTable(cn, "listarempleados")
End Function
Public Function grabarempleados(ByVal ent As classentidad) As Integer
Return SqlHelper.ExecuteNonQuery(cn, "grabarempleados", ent.Nombres, ent.Cargo, ent.Planilla, ent.Direccion, ent.Pais, ent.Ciudad, ent.Dni, ent.Telefono,
ent.Celular, ent.Email, ent.Sexo, ent.FIngreso, ent.FSalida, ent.Nhijos, ent.FNacimiento, ent.Edad, ent.Sueldo, ent.Imagen)
End Function
End Class
Capa ENTIDAD: classentidad.vb
Public Class classentidad
Public CodEmp, Nombres, Cargo, Planilla, Direccion, Pais, Ciudad, Telefono, Celular, Email, Sexo As String
Public Dni, Nhijos, Edad As Integer
Public Sueldo As Decimal
Public FIngreso, FSalida, FNacimiento As Date
Public Imagen() As Byte
End Class
Capa NEGOCIO: classentidad.vb
Imports Entidad
Imports Datos
Public Class classnegocio
Dim datos As New classdatos
Public Function generarcodemp() As String
Return datos.generarcodemp
End Function
Public Function listarempleados() As DataTable
4. Return datos.listarempleados
End Function
Public Function grabarempleados(ByVal ent As classentidad) As Integer
Return datos.grabarempleados(ent)
End Function
End Class
Capa APLICACION: mantEmpleados.vb
Imports Negocio
Imports Entidad
Imports System.IO
Public Class mantEmpledos
Dim NEG As New classnegocio
Dim ENT As New classentidad
Private Sub mantEmpledos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
dgvempleados.DataSource = NEG.listarempleados
End Sub
Private Sub dgvempleados_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles
dgvempleados.CellClick
btnmodificar.Enabled = True
btneliminar.Enabled = True
Try
tbcodigo.Text = Me.dgvempleados.Item(0, e.RowIndex).Value
tbnombres.Text = Me.dgvempleados.Item(1, e.RowIndex).Value
cbocargo.Text = Me.dgvempleados.Item(2, e.RowIndex).Value
cboplanilla.Text = Me.dgvempleados.Item(3, e.RowIndex).Value
tbdireccion.Text = Me.dgvempleados.Item(4, e.RowIndex).Value
cbopais.Text = Me.dgvempleados.Item(5, e.RowIndex).Value
cbociudad.Text = Me.dgvempleados.Item(6, e.RowIndex).Value
tbdni.Text = Me.dgvempleados.Item(7, e.RowIndex).Value
tbtelefono.Text = Me.dgvempleados.Item(8, e.RowIndex).Value
5. tbcelular.Text = Me.dgvempleados.Item(9, e.RowIndex).Value
tbemail.Text = Me.dgvempleados.Item(10, e.RowIndex).Value
cbosexo.Text = Me.dgvempleados.Item(11, e.RowIndex).Value
dtpfingreso.Text = Me.dgvempleados.Item(12, e.RowIndex).Value
dtpfsalida.Text = Me.dgvempleados.Item(13, e.RowIndex).Value
tbnhijos.Text = Me.dgvempleados.Item(14, e.RowIndex).Value
dtpfnacimiento.Text = Me.dgvempleados.Item(15, e.RowIndex).Value
tbedad.Text = Me.dgvempleados.Item(16, e.RowIndex).Value
tbsueldo.Text = Me.dgvempleados.Item(17, e.RowIndex).Value
Dim MyPhoto() As Byte = CType(Me.dgvempleados.Item(18, e.RowIndex).Value, Byte())
Dim ms As New MemoryStream(MyPhoto)
Me.pbimagen.Image = Image.FromStream(ms)
Catch ex As Exception
End Try
End Sub
Private Sub btngrabar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btngrabar.Click
Dim ms As New MemoryStream
pbimagen.Image.Save(ms, pbimagen.Image.RawFormat)
ENT.CodEmp = tbcodigo.Text
ENT.Nombres = tbnombres.Text
ENT.Cargo = cbocargo.Text
ENT.Planilla = cboplanilla.Text
ENT.Direccion = tbdireccion.Text
ENT.Pais = cbopais.Text
ENT.Ciudad = cbociudad.Text
ENT.Dni = tbdni.Text
ENT.Telefono = tbtelefono.Text
ENT.Celular = tbcelular.Text
ENT.Email = tbemail.Text
ENT.Sexo = cbosexo.Text
ENT.FIngreso = dtpfingreso.Text
ENT.FSalida = dtpfsalida.Text
ENT.Nhijos = tbnhijos.Text
6. ENT.FNacimiento = dtpfnacimiento.Text
ENT.Edad = tbedad.Text
ENT.Sueldo = tbsueldo.Text
ENT.Imagen = ms.GetBuffer
NEG.grabarempleados(ENT)
MsgBox("Registro Grabado")
dgvempleados.DataSource = NEG.listarempleados
End Sub
Private Sub btnmodificar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnmodificar.Click
End Sub
Private Sub btneliminar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btneliminar.Click
End Sub
Private Sub btnsalir_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnsalir.Click
Me.Close()
End Sub
Private Sub btnexaminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnexaminar.Click
With OpenFileDialog1
.InitialDirectory = ""
.FileName = "Todos los Archivos"
.Filter = "Todos los Archivos |*.*|JPEGs|*.jpg|GIFs|*.gif|Bitmaps|*bmp|PNGs|*.png"
.FilterIndex = 2
End With
If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
pbimagen.Image = Image.FromFile(OpenFileDialog1.FileName)
End If
End Sub
Private Sub btnnuevo_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnnuevo.Click
7. Dim limpiar As Control
: For Each limpiar In Me.Controls
: If (TypeOf limpiar Is TextBox) OrElse (TypeOf limpiar Is ComboBox) OrElse (TypeOf limpiar Is DateTimePicker) Then limpiar.Text = ""
: Next
pbimagen.Image = Nothing
btnmodificar.Enabled = False
btneliminar.Enabled = False
tbcodigo.Text = ENT.CodEmp
NEG.generarcodemp()
End Sub
End Class