Al final he conseguido ejecutar la aplicación, y también guardar asignaciones.
Si miras las asignaciones en la pantalla de asignaciones tienes los siguientes datos:
1 SUELDOQUINCENAL
2 SUELDOMENSUAL
3 BONOPORASISTENCIA
4 HORASEXTRAS
5 BONOVACACIONAL
6 COMISIONES
7 BONONOCTURNO
8 DIASFERIADOS
9 PRIMADERESPONSABILIDAD
10 PRIMAPROFESIONALIZACION
11 PRIMADETRANSPORTE
Estos son los datos que el programa intenta introducir en la base de datos. ¿Qué ocurre? Que en la base de datos los campos que existen en la tabla asignacionesdeempleados son estos:
CEDULA
NOMBRES
APELLIDOS
SUELDO
3 BONOPORASISTENCIA
4 HORASEXTRA
5 BONOVACACIONAL
6 COMISIONES
7 BONONOCTURNO
8 DIASFERIADOS
9 PRIMADERESPONSABILIDAD
10 PRIMAPROFESIONALIZACION
11 PRIMADETRANSPORTE
Como ves en la tabla en MySql te faltan estos campos:
1 SUELDOQUINCENAL
2 SUELDOMENSUAL
Tú intentas introducir datos en estos campos usando Visual Basic, pero en la base de datos no existen estos campos y entonces te salta un error. Luego resulta que esos datos están en otra tabla, pero si los quieres guardar en otra tabla tendrías que hacer otra operación de guardado.
Suponiendo que los vamos a guardar en la misma tabla, vete a phpMyAdmin y accede a la tabla asignacionesdeempleados, pulsa en "Estructura", luego en añadir un campo después de SUELDO y crea un campo de nombre SUELDOQUINCENAL y tipo int con longitud/valores 10 de modo que será int(10). Haz lo mismo y crea SUELDOMENSUAL
Además tienes otro problema en el código. Tú en el código del formulario asignaciones tienes esto:
If tabla.EOF = True Then
tabla.AddNew
tabla!SUELDOQUINCENAL = SUELDOQUINCENAL
tabla!SUELDOMENSUAL = SUELDOMENSUAL
tabla!BONOPORASISTENCIA = TextBonoAsistencia
tabla!HORASEXTRAS = TextHorasExtra
tabla!BONOVACACIONAL = TextVacaciones
tabla!COMISIONES = TextComisiones
tabla!BONONOCTURNO = TextBonoNocturno
tabla!DIASFERIADOS = TextDiasFeriados
tabla!PRIMADERESPONSABILIDAD = TextPrimaderesponsabilidad
tabla!PRIMAPROFESIONALIZACION = TextPrimaProfesionlizacion
tabla!PRIMADETRANSPORTE = textPRIMATRANSPORTE
tabla.Update
tabla.Close
Pero en la base de datos con phpMyAdmin el campo no se llama HORASEXTRAS acabado en S sino simplemente HORASEXTRA. En el código tiene que ir exactamente el mismo nombre, por tanto hay que poner
tabla!HORASEXTRA = TextHorasExtra
Porque si no no hay correspondencia exacta y no funcionará.
Más cosas a arreglar: el código dice
Set tabla = New ADODB.Recordset
sql = "select * from datosdeempleados where CEDULA="" & txtcedula & """
tabla.Open sql, cn, adOpenDynamic, adLockOptimistic
If tabla.EOF = True Then
tabla.AddNew
tabla!SUELDOQUINCENAL = SUELDOQUINCENAL
Pero la tabla en la que se quiere guardar no es datosdeempleados sino asignacionesdemepleados, luego hay que modificar esto para apuntar a la tabla que queremos:
sql = "select * from asignacionesdeempleados where CEDULA="" & txtcedula & """
Más cosas a arreglar:
sql = "select * from datosdeempleados where CEDULA="" & txtcedula & """
Sobran comillas:
sql = "select * from datosdeempleados where CEDULA=" & txtcedula & ""
Más cosas a arreglar: los valores numéricos hay que indicar que son numéricos añadiendo VAL("nombreDelTextBox") porque si no no coincide el tipo de dato.
Mírate esto si quieres:
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:la-funcion-val-con-visual-basic-para-transformar-texto-en-valores-numericos-ejemplo-de-uso-cu00318a&catid=37:curso-qprogramacion-en-visual-basic-nivel-iq&Itemid=61Más cosas a arreglar:
Private Sub GuardarDatos2_Click()
Falta incluir un argumento para esta función: Private Sub GuardarDatos2_Click(Index as Integer)
Además hay que asignarle un Index al botón, para ello en la ventana de diseño del formulario tienes que pulsar sobre el botón y en el cuadro de propiedades poner en la casilla Index un número 0, y al botón Calcula total ponerle index 1
Con todos los cambios el código es este en el form de Asiginaciones1:
Private Sub GuardarDatos2_Click(Index As Integer)
MsgBox "Se ejecuta", vbInformation
Set tabla = New ADODB.Recordset
sql = "select * from asignacionesdeempleados where CEDULA=" & txtcedula & ""
tabla.Open sql, cn, adOpenDynamic, adLockOptimistic
If tabla.EOF = True Then
tabla.AddNew
tabla!CEDULA = txtcedula
tabla!NOMBRES = ""
tabla!APELLIDOS = ""
tabla!SUELDO = 0
tabla!SUELDOQUINCENAL = Val("SUELDOQUINCENAL")
tabla!SUELDOMENSUAL = Val("SUELDOMENSUAL")
tabla!BONOPORASISTENCIA = Val("TextBonoAsistencia")
tabla!HORASEXTRA = Val("TextHorasExtra")
tabla!BONOVACACIONAL = Val("TextVacaciones")
tabla!COMISIONES = Val("TextComisiones")
tabla!BONONOCTURNO = Val("TextBonoNocturno")
tabla!DIASFERIADOS = Val("TextDiasFeriados")
tabla!PRIMADERESPONSABILIDAD = Val("TextPrimaderesponsabilidad")
tabla!PRIMAPROFESIONALIZACION = Val("TextPrimaProfesionlizacion")
tabla!PRIMADETRANSPORTE = Val("textPRIMATRANSPORTE")
tabla.Update
tabla.Close
MsgBox "Asignaciones Registradas Exitosamente", vbInformation
R = MsgBox("DESEA SEGUIR REGISTRANDO ASIGNACIONES?", vbInformation)
If R = vbYes Then
Else
Unload Me
End If
End If
End Sub
Con esto he conseguido que guarde las asignaciones en la base de datos.
Todavía la parte de repetir el registro de asignaciones no está completada, pero con esto por lo menos he conseguido que me guarde en la tabla de "asignacionesdeempleados" y creo que tienes una buena orientación.