Foros del Web » Soporte técnico » Ofimática »

Tabla por odbc Mysql

Estas en el tema de Tabla por odbc Mysql en el foro de Ofimática en Foros del Web. Que tal foreros?? aun no soy un master en excel, y como muchos el mismo excel es el que me ha ido enseñando, grabo una ...
  #1 (permalink)  
Antiguo 31/03/2011, 11:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Tabla por odbc Mysql

Que tal foreros??

aun no soy un master en excel, y como muchos el mismo excel es el que me ha ido enseñando, grabo una macro y despues modifico el codigo.

lo que estoy haciendo es mostrar una consulta a una base de datos Mysql, pero cuando grabo la macro con Datos->De otras fuentes->Asistente de conexion me genera un archivo odc. No habia problema asi funcionaba, pero si lo intento executar desde otra maquina, me marca error porque ese archivo no existe.

este es el codigo que me genera:



With ActiveSheet.ListObjects.Add(SourceType:=0, SOURCE:= _
"ODBC;DSN=niveles_servicio;OPTION=0;;PORT=0;SERVER =sbd;UID=nivel_servicio", _
Destination:=Range("$A$6")).QueryTable
.CommandText = Array( _
"SELECT * FROM `NIVEL`.`NIVEL2011`")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"C:\Documents and Settings\...\Mis documentos\Mis archivos de origen de datos\NIVEL.odc"
.ListObject.DisplayName = "Tabla_NIVEL"
.Refresh BackgroundQuery:=False
End With




como podria hacer para poner ahi la cadena de conexion y no en un archivo??

mil gracias
  #2 (permalink)  
Antiguo 31/03/2011, 12:20
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: Tabla por odbc Mysql

hola, lo primero
tener instalado los driver ODBC para MySQL, yo instale los 3.5

te dejo mi trabajo ya que lo hago en una intranet y no sirven las pass

Código vb:
Ver original
  1. Public cn, RS
  2.  
  3. Sub abrirConn()
  4. Set cn = CreateObject("ADODB.Connection")
  5. Set RS = CreateObject("ADODB.Recordset")
  6. strCon = "Driver={MySQL ODBC 3.51 Driver};Server=base-ale-cl;Database=excelcalculador;" _
  7. & "User=connExcel;Password=concurrencia;Option=3;"
  8. cn.Open strCon
  9. End Sub
  10.  
  11. Sub cerrarConn()
  12. RS.Close
  13. End Sub
  14.  
  15.  
  16. Sub cargarUsuarios()
  17. abrirConn
  18. strSQL = "SELECT name_users FROM dat_usuarios ORDER BY name_users"
  19. RS.Open strSQL, cn
  20. f = 0
  21. tope = 8
  22.     Do While Not RS.EOF
  23.         ' recorre los campos en el registro actual del recordset para recuperar el dato
  24.        For i = 0 To RS.Fields.Count - 1
  25.             'Sheets(1).login.AddItem RS.Fields(i)
  26.            Sheets(1).Cells(f + tope, 14) = RS.Fields(i)
  27.             'Cells(i + 15, 1) = RS.Fields(i)
  28.        Next
  29.         f = f + 1
  30.         ' Siguiente registro
  31.        RS.MoveNext
  32.     Loop
  33.  
  34. cerrarConn
  35.  
  36. limitelista = f + tope - 1
  37.  
  38. With Sheets(1).Range("C9")
  39.     .Validation.Delete
  40.     .Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  41.             xlBetween, Formula1:="=N" & tope & ":N" & limitelista
  42.     .Validation.IgnoreBlank = True
  43.     .Validation.InCellDropdown = True
  44. End With
  45.  
  46. End Sub
  47.  
  48.  
  49. Sub coneccion()
  50. usuario = Sheets(1).Range("C9")
  51. passescrita = Sheets(1).Range("C10")
  52.  
  53. abrirConn
  54. strSQL = "SELECT id_users,inic_users,pass_users FROM dat_usuarios WHERE name_users=""" & usuario & """LIMIT  1"
  55. RS.Open strSQL, cn
  56.  
  57.     Do While Not RS.EOF
  58.         ' recorre los campos en el registro actual del recordset para recuperar el dato
  59.        For i = 0 To RS.Fields.Count - 1
  60.             If i = 0 Then idusuario = RS.Fields(i)
  61.             If i = 1 Then inicusuario = RS.Fields(i)
  62.             If i = 2 Then passusuario = RS.Fields(i)
  63.         Next
  64.         ' Siguiente registro
  65.        RS.MoveNext
  66.     Loop
  67.  
  68. cerrarConn
  69.  
  70.  
  71. If CStr(passescrita) = CStr(passusuario) Then
  72.     Sheets(1).Range("O1") = idusuario
  73.     Sheets(1).Range("O2") = inicusuario
  74.     ingreso
  75. Else
  76.     MsgBox ("Error en la contraseña")
  77.     Exit Sub
  78. End If
  79.  
  80. End Sub


salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 31/03/2011, 12:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Tabla por odbc Mysql

Muchas gracias!!! pruebo y comento
  #4 (permalink)  
Antiguo 31/03/2011, 13:20
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Tabla por odbc Mysql

hasta el momento todo va bien.
pero en general no se el nombre de los campo, o en su defecto son muchos.

mi idea es pegar todo el registro por renglon.

a diferencia de las funciones que haz puesto, que van escribiendo dato por dato en cada celda.

de ante mano muchas gracias
  #5 (permalink)  
Antiguo 31/03/2011, 13:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 113
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: Tabla por odbc Mysql

muchas gracias por la atencion!!!
listo!!!!


RS.Open strSQL, cn
Range("A6").CopyFromRecordset RS

Etiquetas: mysql, odbc, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:54.