Visual Basic.NET - cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

 
Vista:
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 29/06/2019 22:21:01
Buenas amigos(as) de lwp.

Tengo un pequeño programa en visual studio 2017 y una Base de Datos (BD) en Access 2016. El problema que tengo es que cuando me llevo la carpeta Debug a otro equipo, me aparece el problema que no se ha podido conectar con la BD, he buscado ejemplos en la web pero cambian los programas y cambian las estructuras de desarrollo.

La pregunta es: Cuál sería el proceso para que el programa realizado en visual studio 2017 y BD Access 2016, funcione la conexión en un equipo cliente?

Otra duda si es posible que me puedan colaborar.

Si tengo una BD en Access 2016 que se llama DB y la tabla listado, tengo los siguientes campos: Id_usuario, nombre, apellido, fecha_nac, celular; al momento de dar clic en guardar quiero verificar si el Id_usuario no se encuentra se guardan los datos, pero si ya se encuentra mandar un mensaje y no guardar los datos.

La pregunta: Cuál sería el procedimiento para realizar esta comparación?

Mil gracias por su tiempo y la colaboración
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier
Val: 186
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Javier (65 intervenciones) el 01/07/2019 00:20:19
Seria bueno que nos muestres el codigo que llevas para poder agregarle nuestras ideas..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 01/07/2019 23:06:17
Hola Javier, este es el codigo para Guardar. Aparece la conexión a la Base de Datos, pero no me funciona cuando lo ejecuto en otro equipo y la otra pregunta es cómo verificar si el campo Id_usuario ya se encuentra en la Base de Datos antes de guardar. Muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Btn_guardar.Click
 
    Try
        cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\Desktop\Francisco\BD.accdb"
        cadena.Open()
 
        comando = New OleDbCommand("Insert into listado(Id_usuario,nombre,email,celular,centro,direccion,barrio,zona)" &
                                   "values(Id_usuario,nombre,email,celular,centro,direccion,barrio,zona)", cadena)
 
        comando.Parameters.AddWithValue("@Id_usuario", Id_usuario.Text)
        comando.Parameters.AddWithValue("@nombre", nombre.Text)
        comando.Parameters.AddWithValue("@email", email.Text)
        comando.Parameters.AddWithValue("@celular", celular.Text)
        comando.Parameters.AddWithValue("@centro", centro.Text)
        comando.Parameters.AddWithValue("@direccion", direccion.Text)
        comando.Parameters.AddWithValue("@barrio", barrio.SelectedItem)
        comando.Parameters.AddWithValue("@zona", zona.SelectedItem)
 
 
        comando.ExecuteNonQuery()
 
        MsgBox("Registro Guardado Correctamente", vbInformation, "Aviso")
 
        Id_usuario.Text = ""
        nombre.Text = ""
        email.Text = ""
        celular.Text = ""
        centro.Text = ""
        direccion.Text = ""
        barrio.Text = ""
        zona.Text = ""
 
    Catch ex As Exception
 
        MsgBox("Registro No se Guardo", vbCritical, "Aviso")
 
    End Try
 
    cadena.Close()
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Raúl Mejía rmejia153@msn.com (23 intervenciones) el 02/07/2019 02:01:18
Hola Edwin buenas tardes, para empezar la pc donde instales el sistema debe de tener una partición E:, lo ideal seria que la base de datos estuviera en un servidor o en la unidad C: ya que todas las computadorea tienen unidad C: pero no todas tienen unidad E:, ese es el problema por el cual no te funciona en el cpu donde lo instalas y el otro problema lo resuelves si antes de capturar haces los siguiente :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub New_Reg()
    Try
        Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Mi Directorio\BD.accdb")
            cnx.Open()
            sSql = "SELECT * FROM LISTADO WHERE ID_USUARIO = (SELECT MAX(ID_USUARIO) FROM LISTADO)"
            Dim cmd As New OleDbCommand(sSql, cnx)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("ID_USUARIO", Id_usuario.Text)
            Dim rstLISTADO As OleDbDataReader = cmd.ExecuteReader()
            If rstLISTADO.Read = True Then
                Id_usuario.Text = CStr(rstLISTADO(0)) + 1
                cnx.Close()
                rstLISTADO.Close()
            Else
                Id_usuario.Text = 1
            End If
        End Using
    Catch ex As Exception
        MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

De esta forma ya no tendrías que capturar el id_usuario, ya que estás leyendo el último y grabando el resultado de la consulta + 1 en Id_usuario.txt, inclusive lo puedes dejar inhabilitado este control.

Espero te sirva mi consejo, saludos desde México.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 02/07/2019 21:49:24
Hola Raul, muchas gracias por tu tiempo y por la colaboración.

Sobre la primera pregunta he realizado los cambios necesarios y sigue mostrando el mismo mensaje que no se conectó con la Base de Datos.
Yo tengo instalado el Visual Studio 2017 y Access 2016 en un equipo con Windows 10 de 64 bits, el equipo cliente le instale Windows 7 de 64 bits y Access 2013, crei que se debería a los diferentes programas y le instale al equipo cliente Windows 10 de 64 bits y Access 2016, y también presentó el mismo error.

Probe con dos formas de hacer la conexión, pensando que debido a eso era el error:
1.) cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Prueba\Prueba\bin\Debug\DB.accdb"
2.)cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Debug\DB.accdb"

Pero ninguna funciono.

Coloco el codigo para que sepas lo que tengo y me puedas colaborar u otra persona.

Nuevamente muchas gracias por el tiempo.

Imports System.Data.OleDb
Imports System.Data
Public Class frm_menu
Dim cadena As New OleDbConnection
Private Sub frm_menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Prueba\Prueba\bin\Debug\DB.accdb"
cadena.Open()

MsgBox("Conectado con la Base de Datos", vbInformation, "Aviso")

Catch ex As Exception

MsgBox("No se conecto con la Base de Datos", vbCritical, "Aviso")
End Try
End Sub

Private Sub SalirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SalirToolStripMenuItem.Click
Me.Close()
End Sub

End Class


Probe tambien de esta forma y tampoco funciono

Imports System.Data.OleDb
Imports System.Data
Public Class frm_menu
Dim cadena As New OleDbConnection
Private Sub frm_menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Using cadena As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Prueba\Prueba\bin\Debug\DB.accdb")
cadena.Open()

MsgBox("Conectado con la Base de Datos", vbInformation, "Aviso")

End Using
Catch ex As Exception

MsgBox("No se conecto con la Base de Datos", vbCritical, "Aviso")
End Try
End Sub

Private Sub SalirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SalirToolStripMenuItem.Click
Me.Close()
End Sub

End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Raúl Mejía rmejia153@msn.com (23 intervenciones) el 03/07/2019 19:03:04
Buenos días Edwin, mira yo así declaro la ruta donde se encuentra mi base de datos en una variable pública:

1
dSn = "\\servidor\Finanzas\Cooperativa\Cooperativa.accdb"

y me conecto de la siguiente manera, por ejemplo esta función:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Check_Access()
    Try
        Using cnx As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dSn)
            cnx.Open()
            Dim Pssw As String
            Pssw = txtPassword.Text
            sSql = "SELECT * FROM USUARIOS WHERE USUARIO = '" & txtUser.Text & "'" & " AND CLAVE = '" & EncryptStr(Pssw) & "'"
            Dim cmd As New OleDbCommand(sSql, cnx)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.AddWithValue("USUARIO", txtUser.Text)
            Dim rstUSERS As OleDbDataReader = cmd.ExecuteReader()
            If rstUSERS.Read = True Then
                UserName = CStr(rstUSERS(2))
                UserLogin = CStr(rstUSERS(3))
                intJerarq = CStr(rstUSERS(4))
                frmMenu.Show()
                Me.Close()
            Else
                MsgBox("Contraseña o Nombre Incorrectos")
                txtUser.Focus()
            End If
            cnx.Close()
            rstUSERS.Close()
        End Using
    Catch ex As Exception
        MessageBox.Show("Error : " + ex.Message + "", "¡Ocurrio el siguiente Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
Exit Sub

Así, en cualquier computadora que lo instale me funciona, no tengo que hacer mas nada.

En caso de que lo hagas a nivel local la ruta debe ser la misma en la pc que la instales o sea que si la tienes así en tu computadora

1
cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Prueba\Prueba\bin\Debug\DB.accdb"

Asi debes de tener esos directorios y subdirectorios en la pc cliente C:\Prueba\Prueba\bin\Debug\DB.accdb
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 06/07/2019 20:50:35
Muchas gracias Raúl por tu tiempo.

Mira decidi hacer el llamado de un Form con la Base de Datos (lo más sencillo), para ver si puedes colaborarme.

Creo que con un ejercicio (coloco el archivo y la BD como archivo adjunto) para ver si con un ejemplo asi de pequeño se podra resolver la duda de la conexión de la Base de Datos en un equipo cliente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Imports System.Data.OleDb
Imports System.Data
Public Class Form1
    Dim cadena As New OleDbConnection
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            cadena.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\Inf Maria\Desktop\Prueba\BD.accdb"
            cadena.Open()
 
            MsgBox("Conectado con la Base de Datos", vbInformation, "Aviso")
        Catch ex As Exception
            MsgBox("No se conecto con la Base de Datos", vbCritical, "Aviso")
        End Try
    End Sub
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 186
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Javier (65 intervenciones) el 02/07/2019 23:01:02
Una consulta, el Engine o redistribuible para access, la versión que necesitas la tienes instalada en la maquina cliente?

Te dejo un link para access 2016, no se si te sirva.

https://www.microsoft.com/en-us/download/details.aspx?id=54920

También preguntarte, la conexión que inatentas realizar, la quieres hacer en red o local, es decir por cada maquina que instales tu sistema tendrá una base de datos local o la BD la tendrás en una sola maquina, tipo servidor y a esta maquina se conectaran las demás?

La otra duda que tienes ya te dieron una idea, solo agrego, si es un usuario nuevo no tendrías que asignarle un ID hasta el momento que lo insertes, podrías manejar el campo ID como entero y hacerlo autoincremental, con esto te ahorras las validaciones que mencionas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 02/07/2019 23:33:05
Hola Javier, gracias por tu tiempo y por la respuesta.

Descargue el archivo y lo instale en el equipo cliente, pero no funciono.

La conexión en este momento quiero hacerla en el equipo cliente (Local), pero es lógico que en su momento quisiera saber como hacer la conexión en varios equipos(Cliente - Servidor).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hugo
Val: 96
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Hugo (82 intervenciones) el 01/07/2019 17:04:30
Yo ralizo la conexión de la siguiente manera:


Public cconexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\control\db\ctrl_base.mdb;Persist Security Info=True;Jet OLEDB:Database Password=12345678"

No importa donde tenga la base de datos siempre la llamara.

Puedes ver este ejemplo:

http://vbpuntonet.blogspot.com/2016/05/grabar-modificar-y-borrar-registros-en.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Diego
Val: 681
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Diego (190 intervenciones) el 06/07/2019 15:01:06
A veces existe un conflicto con la versión de Access si es de 32 o 64 bits y el Driver JET que maneja las tablas de Access. Asegurate de tener la misma version de Office en la maquina donde intentas conectar tu base de datos(donde estás teniendo el problema), al menos la misma version que en la computadora donde desarrollás.

Saludos y +Bytes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 06/07/2019 20:21:48
Buenos días Diego, gracias por tu tiempo y la colaboración.
La primera prueba la realice en un equipo cliente con Windows 7 de 64 bits y Office 2013 de 64 bits, no me funciono y decidi instalarle al equipo cliente Windows 10 de 64 bits y Office 2016 de 64 bits, que son las caracteristica del equipo donde tengo instalado el Visual Studio.

Pero no funciono.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Diego
Val: 681
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Diego (190 intervenciones) el 07/07/2019 03:24:09
Instala un office de 32 bits. Aunque el sistema operativo sea de 64. A mi me soluciono ese inconveniente.

Saludos y +bytes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

SOLUCIÓN - cadena de conexión que funcione en la maquina del Cliente Visual NET 2017 ACCESS 2016

Publicado por Edwin (7 intervenciones) el 09/07/2019 01:57:01
Buenas a todos.

Les comento que ya pude ejecutar el programa en el equipo cliente.

Gracias a todos por el tiempo y la colaboración. Les explico que fue lo que hice (con la ayuda de ustedes):
1. El aporte de Raúl Mejía, se debe colocar la Base de Datos con conexión en la unidad C y lo pueden hacer desde la carpeta Debug (C:\Debug.(nombre BD y extensión))es preferible que la Base de Datos la guarden dentro de la carpeta Debug.

2. Al aporte de Javier, lo complementaria con decir que es necesario instalar los dos archivo que se encuentran en este link
https://www.microsoft.com/en-us/download/confirmation.aspx?id=54920
tanto para equipos de 32 o 64 bits, mi error era instalar solo el que era necesario para el equipo cliente y es necesario instalar los dos.

3. Si hacen cambios ejecuten el programa. Me sucedió que hacia los cambios y le daba en guardar proyecto o guardar, note que los cambios en el ejecutable (carpeta Debug) no se guardan si no se ejecuta el programa.

Me dedicaré ahora a probar los aportes con respecto a la segunda pregunta. Cuál sería el procedimiento para realizar esta comparación? y probar como seria el procedimiento para guardar la Base de Datos en el equipo servidor y ejecutar el programa en el cliente.

Nuevamente mil gracias a todos por su tiempo y colaboración, y espero que este aporte de todos sea de utilidad para otros visitantes de LWP.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar