Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-01-2006
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Como conectar a servidor base de datos remoto????

Hola, tras buscar en los foros, no he encontrado nada q me sirva en principio. Os cuento la situacion:

Tengo un programa hecho en Delphi 7, la base de datos esta en SQLServer en la misma maquina. Hasta ahora se accedia mediante un componente TDatabase. En este configuraba el AliasName, DatabaseName y los Params (Usuario y password).
Por otro lado, con el BDE Administrator, me creaba una nueva "conexion a base de datos" en la q ponia: El tipo, DataBaseName, Server Name (Aqui ponia el nombre de la maquina) y el user name. Con esto va todo perfecto teniendo el servidor de base de datos y el programa en la misma maquina.

Pero ahora viene el problema. Quiero q se pueda acceder con el mismo programa a la base de datos desde otro ordenador de fuera de esa "red local", es decir, conociendo su ip poder conectarme desde cualquier cliente.

He probado a poner en Server Name la IP del equipo q tiene la bbdd pero de este modo no funciona.

Como deberia hacerlo?? Estoy muy verde en este tema ya q siempre habia trabajado en Red Local y funcionaba bien de esa forma...

Un saludo y muchas gracias.
Responder Con Cita
  #2  
Antiguo 03-01-2006
jabim jabim is offline
Registrado
 
Registrado: dic 2005
Posts: 8
Poder: 0
jabim Va por buen camino
Conexion a BD

Este es un extracto del código que yo utilizo. Debes sustituir las palabras clave (en negrita) por los valores apropiados (En NombreMaquina debes ponerlo sin \\ ;Ejemplo: NombreMaquina=SERVIDORBD):
Código Delphi [-]
varConexion := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=usuario;Password=clave;Initial Catalog=NombreBaseDatos;Data Source=NombreMaquina'
  { Se abre la conexión a la base de datos }
  ADOConexion := TADOConnection.Create(nil);
  ADOConexion.Close;
  ADOConexion.CommandTimeout := 30;
  ADOConexion.ConnectionTimeout := 15;
  ADOConexion.CursorLocation := clUseClient;
  ADOConexion.IsolationLevel := ilCursorStability;
  ADOConexion.LoginPrompt := False;
  ADOConexion.ConnectionString := varConexion;
  ADOQuery := TADOQuery.Create(nil);
  try
    try
      ADOConexion.Open;
      ADOQuery.Connection := ADOConexion;
    except
      { Error al abrir la base de datos }
      ADOQuery.Close;
      ADOConexion.Close;
    end;
    { Se obtienen los datos }
    ADOQuery.Close;
    ADOQuery.SQL.Clear;
    strSQL := 'Select ......';
    ADOQuery.SQL.Add(strSQL);
    ADOQuery.Open;
    if ADOQuery.RecordCount <> 0 then
      while not ADOQuery.EOF do
        begin
          otener datos....;
          ADOQuery.Next;
        end;
    ADOQuery.Close;
  finally
    ADOQuery.Free;
    ADOConexion.Free;

Última edición por vtdeleon fecha: 03-01-2006 a las 16:48:34.
Responder Con Cita
  #3  
Antiguo 03-01-2006
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
En primer lugar, gracias por tu respuesta.

Ese código me da la sensación q unicamente funcionaria en red local no?

En ningún punto pones la ip del servidor de BBDD.

Salu2.

PD: Por cierto, al usar un TADOConnection ya me tendria q olvidar del TDataBase o lo tengo q mantener?
Responder Con Cita
  #4  
Antiguo 03-01-2006
jabim jabim is offline
Registrado
 
Registrado: dic 2005
Posts: 8
Poder: 0
jabim Va por buen camino
No veo porque solo ha de funcionar en red local. Hay que asegurarse de que la máquina donde esté corriendo la BD tenga los permisos necesarios para que máquinas de otras redes puedan acceder a ella a través de su IP. Yo no trabajo montando las redes, pero según me comentan los compañeros de sistemas, eso funciona sin problemas.

La IP del servidor tienes que ponerla en el parámetro "Data Source" de la cadena de conexión. Yo lo probé y sin problema. Por error, antes puse mal el ejemplo :
NombreMaquina=SERVIDORBD
debería haber puesto: Data Source=SERVIDORBD
y por IP sería por ejemplo: Data Source=22.22.22.22

El TDataBase ya no es necesario.
Responder Con Cita
  #5  
Antiguo 03-01-2006
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Ok, creo q entiendo por donde van los tiros. La unica pega ahora va a ser para hacer pruebas, jejeje, tendre q ir a casa de amigos o mandarles el ejecutable para ver si se pueden conectar

Un saludo y gracias por tu ayuda.
Responder Con Cita
  #6  
Antiguo 03-01-2006
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Otra cosa q acabo de pensar...tendré q, al poner el TADOConnection en vez del TDatabase con su correspondiente configuración del BDE Administrator, todas las TQuerys como TAdoQuerys y todos los TDataSet ccomo TAdoDataSet???
Un saludo.
Responder Con Cita
  #7  
Antiguo 03-01-2006
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Nada, sigo sin poder conectarme...he probado y no me puedo conectar. Lo mismo es algun problema con la configuracion del propio SQLServer pq sigo los pasos q me has dado. Bueno, en realidad lo unico q hago es configurarme el connectionString poniendo la IP del servidor SQL, el usuario y el password y el nombre de la BBDD pero no logra conectar.

En cambio en red local todo funciona correctamente.

Salu2.
Responder Con Cita
  #8  
Antiguo 04-01-2006
jabim jabim is offline
Registrado
 
Registrado: dic 2005
Posts: 8
Poder: 0
jabim Va por buen camino
Respecto al tema de usar los TADO... en vez de los otros, te puedo decir que en la aplicación de donde saqué el ejemplo únicamente se utiliza este tipo, pero se trata de un programa que ya tiene varios años y se comenzó a desarrollar en Delphi5 y en aquel momento los TADO eran los que mejor se adaptaban a las necesidades. Quizás ahora los otros permitan hacer lo mismo, no lo sé, habría que investigarlo.

Respecto a lo de la red no local, en mi ejemplo no se da el problema pues el programa reside en la misma red del servidor de BD; en tu caso y si no has conseguido que te funcione habría que investigar en detalle las posibilidades de la conexión.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:49:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi