Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - jrhomer

#1
Hola foro.

Antes de nada os doy las gracias por todo lo que me habeis ayudado sin saberlo :D

Me gustaría saber como funcionan las páginas que obtienen información de otras páginas para mostrarlo en las suya. Por ejemplo www.edreams.com.

Aquí se buscan vuelos en otras páginas (iberia, spanAir, ryanair etc...) y muestran en su página esos resultados.

Me gustaría que alguien me guiara un poco para poder aprender sobre como hacer esto. Estoy con un proyecto personal en el que quiero hacer cosas así.


Espero noticias!

Un saludo y Felices Fiestas!
#2
si la BD la tengo en mi servidor local, poniendo localhost no tengo problema. como ya dije en mi post anterior.... en local parece todo mas sencillo.

De todos modos... voy a desmarcarme un poco del tema, ya que ayer tras una charla con el jefe de proyecto me aclaró que trabajaremos con unidades de RED, por lo tnto creo que no tengo que utilizar conexiones remotas, ya que una unidad de red es una carpeta mas... y trabajando con Access no he tenido problemas. Espero poder modelar la base de datos bien y a ver como y donde la coloco, jejeje

De todos modos.... pido que si alguien tiene información sobre el tema de las conexiones remotas por favor nos indique el link o algo para poder llegar a ella. hay que empaparse de todo.... ya que antes o después seguro que las tendremos que utilizar.


un saludo.
#3
he comprendido como hacer la conexión a una base de datos mysql... pero SI está en local!!! donde Server:localhost.... pero que para cuando la base de datos es una base de datos remota? que está en un sitio web... ahí no encuentro nada que me pueda ayudar o si lo encuentro no me entero.

Necesito que alguien me pueda echar una mano para ver por donde van los tiros.

Yo tngo una base de datos mysql en mi sitio web... a la que accedo facilmente desde páginas php y esas cosas.... pero quiero hacer una aplicación de escritorio en VB que pueda manipular esa misma base de datos...

por favor, que alguien me guie un poco :P

Un saludo y gracias como siempre.
#4
yo he usado el buscador... y he usado como criterio mySQL :P es por eso pq no me ha salido

voy a empaparme del tema a ver que tal se me da.
#5
justo hoy he empezado con este tema.

Ando muy muy verde con el tema de mysql y VB. lo que he probado no he investigado no me ha funcionado, tngo una base de datos mysql en mi servidor web... miservidor.com....

alguien tiene idea de cómo podemos abordar esta situación!!

un saludo
#6
finalmente lo exporté en modo TXT de la aplicación madre :P y con esta lo importé y lo pasé de TXT a mdb :P

fue del único modo en que lo he podido "solucionar"

un saludo y gracias como siempre
#7
Por favor... alguna ayuda? ideas nuevas? :P estoy atascado y no se me ocurren nuevas ideas para salir del paso.
#8
Nadie me puede achar una mano?

alguna idea alternativa o algo?
#9
Programación Visual Basic / Importar tabla
17 Mayo 2007, 10:35 AM
Hola foro.

Estoy atancando una base de datos... El caso es que antes de poder atacarla tngo que hacer nos pasos previos que quiero automatizar y que no se como hacerlo y tampoco encuentro información sobre ello.

Ataco una tabla de una mdb en access 95 que genera un programa externo (no viene al caso, pero el programa es IPS). Esta mdb no la puedo atacar directamente ya que me deja abrirla (hablamos siempre mediante código de visual basic) pero no me deja leer los registros de la tabla. Dice que no tengo permisos de READ. Para la tabla de la versión 95 utilizo ".Provider = "Microsoft.Jet.OLEDB.3.51"

Cómo es algo que me corre prisa... pues lo que hice es crearme una mdb en access 2003 (".Provider = "Microsoft.Jet.OLEDB.4.0") y a mano importo la tabla que me interesa de la base de datos v.95. Lo de a mano me refiero que abro access pincho en archivo, importar tabla... y todo eso.

Por lo tanto como creo que lo mas sencillo en este caso seria hacer esto siempre... pues me gustaria saber como puedo importar una tabla de una mdb a otra. Ya que lo de los permisos de READ y todo eso... me informé y me parecia que me llevaria mucho mas tiempo encontrar la solución, ya que habia q regitrar algo en el registro de windows... (le eché un vistazo a eso en la web de microsoft).


Por lo tanto mi duda es... ¿Cómo puedo importar una tabla de una base de datos a otra? Ya que así es el único modo de que me deje leer y hacer todo lo que quiera con la mdb, como siempre.


Espero que alguien me pueda echar una mano.


Un saludo.
#10
lo he conseguido de este modo:


En un módulo:
Option Explicit

'-------------------------------------------------------------
    ' Declaraciones Api
'-------------------------------------------------------------


'Recupera el Hwnd de un menú
Private Declare Function GetMenu Lib "user32" (ByVal hWnd As Long) As Long
'Elimina el menú de una aplicación
Private Declare Function DeleteMenu Lib "user32.dll" ( _
    ByVal hMenu As Long, _
    ByVal nPosition As Long, _
    ByVal wFlags As Long) As Long

'Recupera la cantidad de Item de menúes para saber cuantos hay que eliminar
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
'Redibuja - repinta la barra de menú luego de eliminarlo
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

'Para cerrar-finalizar una apicación abierta por medio de su HWND
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
    ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long


'Api: busca el Handle del programa
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long


' función Api SetParent
Private Declare Function SetParent Lib "user32" ( _
    ByVal hWndChild As Long, _
    ByVal hWndParent As Long) As Long

' Declaración de la función Api ShowWindow
Private Declare Function ShowWindow Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal nCmdShow As Long) As Long

'Esta función recupera el ancho y alto del área _
cliente de la ventana en pixeles

Private Declare Function GetClientRect Lib "user32" ( _
    ByVal hWnd As Long, _
    lpRect As RECT) As Long

' Estas tres funciones es para eliminar la barra de título _
  del programa que se va a incrustar
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
                         (ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
                         (ByVal hWnd As Long, ByVal nIndex As Long, _
                          ByVal dwNewLong As Long) As Long

Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, _
                          ByVal hWndInsertAfter As Long, ByVal x As Long, _
                          ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _
                          ByVal wFlags As Long) As Long

'-------------------------------------------------------------
    ' Constantes
'-------------------------------------------------------------


'Constante para ShowWindow - para maximizar la ventana
Const SHOWMAXIMIZED_eSW = 3&

'Constante para usar con el Api DeleteMenu
Const MF_BYPOSITION = &H400&
Const MF_REMOVE = &H1000&

'Constante para usar con el Api SendMessage para cerrar _
la aplicación ( en este caso La calculadora )
Const SC_CLOSE = &HF060&
Const WM_SYSCOMMAND = &H112

'Constante para usar con GetWindowLong y SetWindowLong
Private Const GWL_STYLE = (-16)
Private Const WS_CAPTION = &HC00000

'Constantes para SetWindowPos
Private Const SWP_FRAMECHANGED = &H20
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4


'Para usar con el Api GetClientRect
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

'-------------------------------------------------------------
    ' Variables
'-------------------------------------------------------------

Dim APP_Rect As RECT

' Mantiene el Handle del programa
Public El_Hwnd_Programa As Long

'-------------------------------------------------------------
    ' Pocedimientos y funciones
'-------------------------------------------------------------


'Elimina y reestablece la barra de título de una ventana
'El primer parámetro es el Hwnd de la misma

Sub Quitar_Barra_Titulo(ByVal El_Hwnd_Programa As Long, _
                        ByVal Quitar As Boolean)


Dim El_Estilo As Long
    'Almacena en la variable el estilo actual
    El_Estilo = GetWindowLong(El_Hwnd_Programa, GWL_STYLE)

    If Not Quitar Then
        El_Estilo = El_Estilo Or WS_CAPTION
    Else
        El_Estilo = El_Estilo And Not WS_CAPTION
    End If


    'Aplica el nuevo estilo
    SetWindowLong El_Hwnd_Programa, GWL_STYLE, El_Estilo
   
    SetWindowPos El_Hwnd_Programa, 0, 0, 0, 0, 0, _
                      SWP_FRAMECHANGED Or _
                      SWP_NOMOVE Or _
                      SWP_NOSIZE Or _
                      SWP_NOZORDER
End Sub


'Elimina el menú de una ventana específica

Sub Eliminar_Menu(El_Hwnd_Programa As Long)
   
    Dim hwnd_Menu As Long
    Dim n_Menu As Long
    Dim i As Integer
   
    ' Recuper el hwnd del menu del programa
    hwnd_Menu = GetMenu(El_Hwnd_Programa)
       
    If hwnd_Menu Then
       
        'cantidad de menúes
        n_Menu = GetMenuItemCount(hwnd_Menu)
       
        If n_Menu Then
           
        'Recorre todos los menú y los elimina
        For i = 1 To n_Menu
           Call DeleteMenu(hwnd_Menu, 0, MF_BYPOSITION Or MF_REMOVE)
        Next
        'Repinta la barra de menú
        Call DrawMenuBar(El_Hwnd_Programa)
       
        End If
    End If
End Sub

'Cierra

Sub Cerrar_Programa(El_Hwnd_Programa As Long)

'Cierra el programa abierto, en este caso la calculadora
Call SendMessage(El_Hwnd_Programa, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)

End Sub

'mete la ventana en el contenedor

Sub Incrustar_calculadora(Path_programa As String, _
                          Contenedor As Object, _
                          Titulo_Ventana As String, _
                          El_Form As Form)

Dim OLD_Scale As Integer

'almacena la escala para reestablecerla luego
OLD_Scale = El_Form.ScaleMode

El_Form.ScaleMode = vbPixels

If El_Hwnd_Programa = 0 Then
   
    'Abre el programa
    'Shell Path_programa, vbMinimizedNoFocus
   
    DoEvents
   
    'Handle de la aplicación
    El_Hwnd_Programa = FindWindow(vbNullString, Titulo_Ventana)
   
    'REcupera el ancho y alto del área cliente
    Call GetClientRect(El_Hwnd_Programa, APP_Rect)
   
    'Redimensiona el picturebox al ancho y alto del programa
    Contenedor.Width = (APP_Rect.Right - APP_Rect.Left)
    Contenedor.Height = (APP_Rect.Bottom - APP_Rect.Top)
   
    Call ShowWindow(El_Hwnd_Programa, vbHide)
   
    'Elimina la barra de título, los menúes y lo incrusta
    Call Quitar_Barra_Titulo(El_Hwnd_Programa, True)
    Call Eliminar_Menu(El_Hwnd_Programa)
    Call Incrustar(El_Hwnd_Programa, Contenedor)
   
End If

El_Form.ScaleMode = OLD_Scale

End Sub



Private Sub Incrustar(h_Programa As Long, el_Contenedor As Object)

Dim Ret As Long

'Lo metemos dentro del Picture1
Call SetParent(h_Programa, el_Contenedor.hWnd)

'Maximizamos la ventana incrustada dentro del contenedor, mediante el _
Api showWindow, pasándole la constante SHOWMAXIMIZED_eSW

Ret = ShowWindow(h_Programa, SHOWMAXIMIZED_eSW)

End Sub

' Libera la ventana pasándole en el segundo _
  parámetro el valor 0 y la cierra

Sub Liberar_Programa(el_Hwnd As Long)
 
If el_Hwnd <> 0 Then
   
    ' Libera el programa
    Call SetParent(el_Hwnd, 0)
   
    'Lo cierra
    Call Cerrar_Programa(El_Hwnd_Programa)
   
   
    El_Hwnd_Programa = 0

End If
End Sub





En el formulario de la aplicación:

Call Incrustar_calculadora("No es necesario el nombre de la aplicación", Picture1, "NombreVentana", Me)
   
    ' Call Incrustar_calculadora("calc.exe", Picture1, "Calculadora", Me)
    ' liberar calculadora
     'Call Liberar_Programa(El_Hwnd_Programa)