Por lo pronto, tienes el Return antes de MesageBox, por lo que el mensaje jamás aparecerá.
Por lo demás, si no está guardando los datos, pero si se está produciendo un error (que como te dije, jamás podrás ver), es muy posible que haya errores de tipos de dato, o formato de los mismos.
Lo que te conviene es capturar mejor el error, por ejemplo:
Código vb:
Ver originalPrivate Sub Agregar1()
Dim cad As New MySqlConnection("Database=Pacientes;Data Source=localhost;User Id=root;Password=utan")
cad.Open()
Dim sql As String = "SELECT * FROM generales"
Dim cmd As New MySqlCommand(sql, cad)
Dim dr As MySqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
'Dim comMySQL As New MySqlCommand
Try
cmd.CommandText = "Insert into generales (fecha, apellidos, nombres, ocupacion, recomendado) values (" & TextBox18.Text & "," & TextBox2.Text & "," & TextBox1.Text & "," & TextBox3.Text & "," & TextBox4.Text & ")"
cmd.ExecuteNonQuery()
Catch ex As MysqlException
MessageBox.Show("Error:" & ex.Message)
Return
Catch ex As Exception
MessageBox.Show("Error:" & ex.Message)
Return
End Try
End Sub