sql-server - microsoft - data source sql server
Problemas para conectarse y consultar en ADO (1)
Estoy creando un archivo .MDB que incluye una base de datos de acceso ms y un formulario creado con vb 6. Estoy usando ms access 2000, y necesito conectarme a mi base de datos local en el MDB y a una base de datos remota de MS SQL 2005.
En el siguiente código, puedo usar un msgbox para mostrar el valor devuelto por el conjunto de resultados, pero cuando trato de mostrarlo en un cuadro de texto, p. Ej .: txtStatus.Value = txtStatus.Value & rstRecordSet.Fields(1) & vbCrLf
, it simplemente se cuelga. Y el método show en el ejemplo original del tutorial tiene un método de depuración. Imprime algo, pero resulta que no hice nada que pueda ver. Quiero decir, VB no tiene un panel de consola, ¿a dónde va la declaración impresa?
El código con error obtenido:
Function Testing()
On Error GoTo Error_Handling
Dim conConnection As New ADODB.Connection
Dim cmdCommand As New ADODB.Command
Dim rstRecordSet As New ADODB.Recordset
conConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
App.Path & "/" & CurrentDb.Name & ";"
conConnection.CursorLocation = adUseClient
With cmdCommand
.ActiveConnection = conConnection
.CommandText = "SELECT * FROM Opt_In_Customer_Record;"
.CommandType = adCmdText
End With
With rstRecordSet
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmdCommand
End With
If rstRecordSet.EOF = False Then
rstRecordSet.MoveFirst
Do
MsgBox "Record " & rstRecordSet.AbsolutePosition & " " & _
rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) & " " & _
rstRecordSet.Fields(1).Name & "=" & rstRecordSet.Fields(1)
rstRecordSet.MoveNext
Loop Until rstRecordSet.EOF = True
End If
conConnection.Close
Set conConnection = Nothing
Set cmdCommand = Nothing
Set rstRecordSet = Nothing
Exit Function
Error_Handling:
MsgBox "Error during function Testing!"
Exit Function
End Function
Pensé que era una broma al principio ;-) De todos modos, supongo que estás hablando de ADO, como en tu título.
Aquí puedes encontrar cosas. Este sitio lo ayudará con las cadenas de conexión para diferentes bases de datos.
La diferencia entre el acceso y el servidor SQL usando ADO es exactamente la cadena de conexión. Te sugiero que evites los controles remotos de datos porque al principio te simplifican la vida pero luego tienes que luchar con ellos porque no funcionan correctamente.
Este es un ejemplo de conexión y búsqueda de datos:
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim strSql As String
cnn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=m:/testdbSource/testSource.mdb;" & _
"User Id=admin;Password=;"
cnn.Open
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = "select * from tblSource"
cmd.Execute
Set cmd = Nothing
cnn.Close
Set cnn = Nothing
Esta muestra funciona para mí:
Function Testing()
On Error GoTo Error_Handling
Dim MyDb As String
Dim conConnection As New ADODB.Connection
Dim cmdCommand As New ADODB.Command
Dim rstRecordSet As New ADODB.Recordset
MyDb = "db1.mdb"
With conConnection
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = App.Path & "/" & MyDb
.Open
End With
With cmdCommand
.ActiveConnection = conConnection
.CommandText = "SELECT * FROM Opt_In_Customer_Record;"
.CommandType = adCmdText
End With
With rstRecordSet
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmdCommand
End With
Do While Not rstRecordSet.EOF
MsgBox "Record " & rstRecordSet.AbsolutePosition & " " & _
rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) & " " & _
rstRecordSet.Fields(1).Name & "=" & rstRecordSet.Fields(1)
rstRecordSet.MoveNext
Loop
conConnection.Close
Set conConnection = Nothing
Set cmdCommand = Nothing
Set rstRecordSet = Nothing
Exit Function
Error_Handling:
MsgBox "Error during function Testing!"
MsgBox Err.Description
End Function