• Viernes 8 de Noviembre de 2024, 20:11

Autor Tema:  Programa Funciona Bien En Mi Pc Pero En Otros No  (Leído 2151 veces)

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Programa Funciona Bien En Mi Pc Pero En Otros No
« en: Viernes 13 de Octubre de 2006, 15:47 »
0
que tal amigos del foro, bueno paso a comentar , tengo el siguiente problema estoy haciendo un programa el cual funciona en mi pc, pero en lo otros pc donde quiero ocuparlos no funciona, le dejo el code quizas pueda ser ose o quizas no si alguien me puede dar alguna ayuda, este es el error que me envia en los otros pc:
-2147217900 Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.

otra cosa la variable dg_nombre_archivo puede ser por ejemplo C:/Libro.XLS

y el code
Código: Text
  1.  
  2. Private Sub CargarPlanillaExcel(dg_nombre_archivo As String)
  3. Dim cnn             As ADODB.Connection
  4. Dim rs              As ADODB.Recordset
  5. Dim k               As Long
  6. Dim dn_ind          As Integer
  7. Dim dg_resultado    As String
  8.  
  9.   Screen.MousePointer = vbHourglass
  10.  
  11.   Me.GrdMovimiento.MaxRows = 0
  12.   Me.GrdMovimiento.MaxCols = 0
  13.  
  14. MsgBox "Confirmacion del nombre de archivo", vbExclamation
  15.  
  16.   If dg_nombre_archivo = "" Then
  17.     Screen.MousePointer = vbDefault
  18.     Exit Sub
  19.   End If
  20.    
  21. MsgBox "Confirmacion del directorio de archivo", vbExclamation
  22.  
  23.   If Dir(dg_nombre_archivo) = "" Then
  24.     Screen.MousePointer = vbDefault
  25.     Exit Sub
  26.   End If
  27.  
  28.   MsgBox "Se intenta establecer la nueva conexion", vbExclamation
  29.  
  30.   ' Establecemos una conexión con el libro de trabajo
  31.   Set cnn = New ADODB.Connection
  32.   'With cnn
  33.   '  .Provider = "Microsoft.Jet.OLEDB.4.0"
  34.   '  .ConnectionString = "Data Source = " + dg_nombre_archivo
  35.   '  .Properties("Extended Properties") = "Excel 8.0;HDR=Yes"
  36.   '  .Open
  37.   'End With
  38.    
  39.   ' Open the Connection
  40.   MsgBox "Ruta y nombre del archivo:" + dg_nombre_archivo, vbExclamation
  41.  
  42.   cnn.Open _
  43.   "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  44.   "Data Source=" + dg_nombre_archivo + ";Extended Properties=""Excel 8.0;HDR=No"""
  45.    
  46.   MsgBox "Si puede leer esto entonces no es problema de conexion", vbExclamation
  47.  
  48.  MsgBox "Se inicializa el recordset", vbExclamation
  49.  
  50.   ' Creamos un nuevo objeto Recordset
  51.   Set rs = New ADODB.Recordset
  52.   With rs
  53.     Set .ActiveConnection = cnn
  54.     ' Indicamos el nombre de la hoja
  55.     .Source = "[Hoja1$]"
  56.     .Open
  57.   End With
  58.    
  59. MsgBox "Ya se establece una hoja excel determinada para el proceso", vbExclamation
  60.    
  61.   If rs Is Nothing Then
  62.     Screen.MousePointer = vbDefault
  63.     Exit Sub
  64.   End If
  65.  
  66.   With Me.GrdMovimiento
  67.     .MaxCols = rs.Fields.Count
  68.     rs.MoveFirst
  69.    
  70.  MsgBox "Se llenan las columnas del nuevo libro", vbExclamation
  71.    
  72.     'Titulos Columnas
  73.     For k = 1 To .MaxCols
  74.       .Row = 0
  75.       .Col = k
  76.       .Text = rs.Fields(k - 1).Name
  77.     Next k
  78.    
  79.     rs.MoveFirst
  80.     Do Until rs.EOF
  81.       .MaxRows = .MaxRows + 1
  82.       .Row = .MaxRows
  83.      
  84.       For k = 1 To .MaxCols
  85.         .Col = k
  86.         .Text = IIf(IsNull(rs.Fields(k - 1).value), 0, rs.Fields(k - 1).value)
  87.       Next k
  88.       rs.MoveNext
  89.     Loop
  90.   End With
  91.    
  92.   cnn.Close
  93.   Screen.MousePointer = vbDefault
  94.  
  95. MsgBox "Fin Sub area Problematica", vbExclamation
  96.  
  97.   On Error GoTo 0
  98.   Exit Sub
  99. End Sub
  100.  
  101.  
eso amigos espero me puedan ayudar gracias adios. :hola:
Un Tigre Nunka Kambia Sus Rayas

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Programa Funciona Bien En Mi Pc Pero En Otros No
« Respuesta #1 en: Viernes 13 de Octubre de 2006, 18:09 »
0
Ya hiciste tu instalador con las dlls y los ocx necesarios?

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Re: Programa Funciona Bien En Mi Pc Pero En Otros No
« Respuesta #2 en: Viernes 13 de Octubre de 2006, 21:38 »
0
sip con todo entonces no puedo ver que ocurre gracias por la ayuda, bueno me gustaria saber si probaste este code gracias adios
Un Tigre Nunka Kambia Sus Rayas

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Programa Funciona Bien En Mi Pc Pero En Otros No
« Respuesta #3 en: Sábado 14 de Octubre de 2006, 23:23 »
0
Segun veo el problema es que esta tomando el titulo de la hoja

ocurre que si le cambiaron el titulo a la hoja

hoja1,hoja2,hoja3

Inventario,Reporte,Otros Datos

programa marca error porque ya no se llama hoja1

[Hoja1$]


tendrias que llamar

[Inventario$]


pudieras tomar el nombre asi

Código: Text
  1.  
  2. Dim NombreTabla As String
  3. Dim Excel As Object
  4.  
  5.  Set Excel = CreateObject("Excel.Application")
  6.  If Not Excel Is Nothing Then
  7.     Excel.Workbooks.Open (dg_nombre_archivo)
  8.     NombreTabla = "[" & Excel.worksheets(1).Name & "$]"
  9.     Excel.Workbooks.Close
  10.    Set Excel = Nothing
  11. End If
  12.  
  13.  

entonces el el source le pasarias NombreTabla

Código: Text
  1.  
  2. ...
  3.    .Source=NombreTabla
  4. ...
  5.  
  6.  

o si utilizas un DataGrid puedes mostrar los datos asi

Código: Text
  1.  
  2.  Set cnn = New ADODB.Connection
  3.      cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dg_nombre_archivo + ";Extended Properties=""Excel 8.0;HDR=No"""
  4.  
  5.   cnn.CursorLocation = adUseClient
  6.   Set rs = New ADODB.Recordset
  7.  
  8.  With rs
  9.    Set .ActiveConnection = cnn
  10.    .Open ("SELECT * FROM " & NombreTabla)
  11.  End With
  12.  Set Me.GrdMovimiento.DataSource = rs
  13.  
  14.  
  15.  

Suerte !
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Re: Programa Funciona Bien En Mi Pc Pero En Otros No
« Respuesta #4 en: Lunes 16 de Octubre de 2006, 14:30 »
0
hey amigos muchas gracias por su ayuda se ve aque este foro es a todo dar y siempre me salvan el pescueso jejeje muchas gracias amigos adios
Un Tigre Nunka Kambia Sus Rayas

neorent

  • Miembro MUY activo
  • ***
  • Mensajes: 249
    • Ver Perfil
    • http://www.laestokada.cl
Re: Programa Funciona Bien En Mi Pc Pero En Otros No
« Respuesta #5 en: Viernes 27 de Octubre de 2006, 16:38 »
0
Amigos,probe el codigo y sigue con errores, el problema es que el nombre de la hoja si es hoja 1.
Envio detalle del problema.


    Area_Archivo = FreeFile
    dn_filas_planillas = 1
    dc_cuenta_anterior_proceso = ""
    dc_otra_moneda_anterior = 0
    ExcelApp.Cells.NumberFormat = "@" ' Formato Texto
       Open dg_archivo_origen For Input As Area_Archivo
   
    Do While Not EOF(Area_Archivo)
        Line Input #Area_Archivo, dl_linea_archivo
        dn_filas_planillas = dn_filas_planillas + 1
       
        hoja.Cells(dn_filas_planillas, C_Columna_dc_sucursal) = dc_sucursal_CDC
        dl_valores_fila_excel(C_Columna_dc_sucursal) = dc_sucursal_CDC
        hoja.Cells(dn_filas_planillas, C_Columna_dc_periodo) = dc_periodo_CDC
        dl_valores_fila_excel(C_Columna_dc_periodo) = dc_periodo_CDC
        hoja.Cells(dn_filas_planillas, C_Columna_dc_tipo_auxiliar) = ""
        dl_valores_fila_excel(C_Columna_dc_tipo_auxiliar) = ""
 
   
----
Aca viene el llenado de datos...es demasiado extenso como para ponerlo aca....pero no tiene problemas...



    Loop
    Close #Area_Archivo
   
'    ExcelApp.rows("1:1").Select
'    ExcelApp.Selection.AutoFilter
   
   
    libro.SaveAs FileName:=dg_ruta_archivo_destino, ConflictResolution:=xlLocalSessionChanges
    libro.Close savechanges:=False
   
    Set hoja = Nothing
    Set libro = Nothing
    Set ExcelApp = Nothing
   
' Por problemas de rutina de ordenamiento en excel, se procede a realizar orden en recordset
'------------------------------------------------------------------------------------------
'    ExcelApp.Cells.Select
'    ExcelApp.Selection.Sort Key1:=Range("P2"), Order1:=xlAscending, Header:=xlGuess, _
'        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'    ExcelApp.Cells.Clear
'------------------------------------------------------------------------------------------
   
'------------------------------------------------------------------------------------------<>
    MsgBox "Se intenta realizar la carga del excel recien creado", vbExclamation

    Call CargarPlanillaExcel(dg_ruta_archivo_destino)
   
    MsgBox "Este mensaje significa que ya se realizo la carga del excel", vbExclamation

MsgBox "Comienza el llenado", vbExclamation
   
    'Llenar RS desde Grilla
    Set rs = UtilADO.CreaRecordsetDesdeGrilla(Me.GrdMovimiento)
    If rs Is Nothing Then
      MsgBox "Error al cargar Grilla a Recordset", vbExclamation
      Screen.MousePointer = vbDefault
      Exit Sub
    End If
 
    If rs.RecordCount = 0 Then
      MsgBox "Error al cargar Grilla a Recordset", vbExclamation
      Screen.MousePointer = vbDefault
      Exit Sub
    End If
   
    If FieldExists(rs, "orden") Then
      rs.Sort = "orden"
    End If




'Este es el procedimiento

Private Sub CargarPlanillaExcel(dg_nombre_archivo As String)
Dim cnn             As ADODB.Connection
Dim rs              As ADODB.Recordset
Dim k               As Long
Dim dn_ind          As Integer
Dim dg_resultado    As String
 
  Screen.MousePointer = vbHourglass

  Me.GrdMovimiento.MaxRows = 0
  Me.GrdMovimiento.MaxCols = 0
 
MsgBox "Confirmacion del nombre de archivo", vbExclamation
 
  If dg_nombre_archivo = "" Then
    Screen.MousePointer = vbDefault
    Exit Sub
  End If
   
MsgBox "Confirmacion del directorio de archivo", vbExclamation
 
  If Dir(dg_nombre_archivo) = "" Then
    Screen.MousePointer = vbDefault
    Exit Sub
  End If
 
  MsgBox "Se intenta establecer la nueva conexion", vbExclamation

  ' Establecemos una conexión con el libro de trabajo
  Set cnn = New ADODB.Connection
  'With cnn
  '  .Provider = "Microsoft.Jet.OLEDB.4.0"
  '  .ConnectionString = "Data Source = " + dg_nombre_archivo
  '  .Properties("Extended Properties") = "Excel 8.0;HDR=Yes"
  '  .Open
  'End With
   
  ' Open the Connection
  MsgBox "Ruta y nombre del archivo:" + dg_nombre_archivo, vbExclamation
 
  cnn.Open _
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=" + dg_nombre_archivo + ";Extended Properties=""Excel 8.0;HDR=No"""
   
  MsgBox "Si puede leer esto entonces no es problema de conexion", vbExclamation
 
 MsgBox "Se inicializa el recordset", vbExclamation

  ' Creamos un nuevo objeto Recordset
  Set rs = New ADODB.Recordset
  With rs
    Set .ActiveConnection = cnn
    ' Indicamos el nombre de la hoja
    .Source = "[Hoja1$]"
    .Open
  End With
   
MsgBox "Ya se establece una hoja excel determinada para el proceso", vbExclamation
   
  If rs Is Nothing Then
    Screen.MousePointer = vbDefault
    Exit Sub
  End If
 
  With Me.GrdMovimiento
    .MaxCols = rs.Fields.Count
    rs.MoveFirst
   
 MsgBox "Se llenan las columnas del nuevo libro", vbExclamation
   
    'Titulos Columnas
    For k = 1 To .MaxCols
      .Row = 0
      .Col = k
      .Text = rs.Fields(k - 1).Name
    Next k
   
    rs.MoveFirst
    Do Until rs.EOF
      .MaxRows = .MaxRows + 1
      .Row = .MaxRows
     
      For k = 1 To .MaxCols
        .Col = k
        .Text = IIf(IsNull(rs.Fields(k - 1).value), 0, rs.Fields(k - 1).value)
      Next k
      rs.MoveNext
    Loop
  End With
   
  cnn.Close
  Screen.MousePointer = vbDefault

MsgBox "Fin Sub area Problematica", vbExclamation
 
  On Error GoTo 0
  Exit Sub
End Sub

Bueno eso es, espero me ayuden porque llevo bastante tiempo y nada...
Gracias.   :hola:
Un Tigre Nunka Kambia Sus Rayas