Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Question Seoane nadie ha podido

Buenas dias,

Estoy diseñando una aplicacion en delphi 7, con componentes ado y sql 2000.
Tengo la necesidad de que en esa aplicacion que tengo, poder instalarla en servidores que nunca haya corrido anteriormente, como es sabido el componente adoconection se configura en tiempo de diseño, ahi elejimos el proveedor, el servidor, user, pass, etc. pero cuando queremos correrla en otro servidor se hace necesario compilar el programa conectado a ese servidor, ya saben todo lo que esto conlleva, ademas de que no es muy profesional que digamos tener que compilar la aplicacion en cada servidor que deseas instalarla. Lo que me gustaria hacer es que la aplicacion localize el servidor o servidores de sql que haya en la red y poder elegir al que me conectare, claro esta se supone que ya la base de datos debera estar atachada a este servidor y entonces a partir de ahi generar el string de coneccion que se le pasara al adoconection.

Ya lo he hecho con archivos de configuracion .ini y funciona, pero para esto debo primero haberme conectado por lo menos la primera vez para poder obtener el string de coneccion y colocarlo en el archivo ini.

Gracias por tu ayuda.

Última edición por marcoszorrilla fecha: 11-04-2007 a las 15:57:16.
Responder Con Cita
  #2  
Antiguo 11-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola erasmorc, no es que no quiera ayudarte, es simplemente que no tengo ni idea de lo que me estas hablando. No se como has llegado a la conclusión de que yo podría darte una solución a tu problema, quizá por mi numero de mensajes en el foro, pero si te fijas bien, de todos ellos creo que solo un par han sido relacionados con bases de datos y fueron para pedir ayuda

Por otro lado, aquí si hay auténticos maestros manejando bases de datos y dirigiéndote directamente a mi, estas limitando la ayuda que puedes recibir. Puede que alguno de ellos sepa la respuesta, pero que ni siquiera lea este hilo ....
Responder Con Cita
  #3  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Buenos dias,

Lo que pasa es que relaciono mas el tema con programacion que con BD, y me parece que una vez colocaste algo en el foro en donde podias a traves de sockets buscar el servidor que estuviera conectado a la red. He tratado de localizar ese hilo pero no he podido, pero de todas formas muchas gracias por contestar la pregunta, voy a colocar el hilo en el foro de BD a ver que pasa. Cuidate y muchas gracias.

Slds,
FRC
Responder Con Cita
  #4  
Antiguo 11-04-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por erasmorc
y me parece que una vez colocaste algo en el foro en donde podias a traves de sockets buscar el servidor que estuviera conectado a la red.
Creo que te refieres a este hilo
http://www.clubdelphi.com/foros/showthread.php?t=40113
Responder Con Cita
  #5  
Antiguo 11-04-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.264
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por erasmorc
...tengo, poder instalarla en servidores que nunca haya corrido anteriormente, como es sabido el componente adoconection se configura en tiempo de diseño, ahi elejimos el proveedor, el servidor, user, pass, etc
Que yo sepa nada te impide rellenar esa cadena en ejecución.

Cita:
Empezado por erasmorc
...ademas de que no es muy profesional que digamos tener que compilar la aplicacion en cada servidor que deseas instalarla.
No es que no sea profesional, es que es del todo innecesario y si a alguien se le pasa por la cabeza tal cosa, que se ponga a dormir unas cuantas horas y luego lo vuelva a pensar de nuevo....

En cuanto a la lista de servidores de una red, hace algun tiempo vi un procedimiento que los buscaba, pero no le logrado encontrarlo.
Revisa esta web, donde puedes encontrar una DLL (servidor COM) que te los devuelve y el correspondiente código en VB. Puedes usarlo directamente o intentar traducirlo.

Otra opción es mirar este artículo de Delphi3000, que muestra cómo hacerlo en Delphi. Aunque es una web de pago, antiguamente podías registrate y acceder a algunos artículos de forma gratuíra; Ahora no se cómo estará el tema...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 11-04-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.264
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A esta me refería.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Gracias Neftali voy a probar de inmediato, pero segun dice el articulo es exactamente lo que necesito realizar.

Slds,
FRC
Responder Con Cita
  #8  
Antiguo 11-04-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por erasmorc
Buenas dias,
como es sabido el componente adoconection se configura en tiempo de diseño, ahi elejimos el proveedor, el servidor, user, pass, etc. pero cuando queremos correrla en otro servidor se hace necesario compilar el programa conectado a ese servidor
Estas sacando conclusiones apresuradas mi amigo, Para eso existen los archivos UDL, que te permiten configurar las conexiónes sin necesidad de usar delphi para recompilar tu aplicación.

Que no sepas hacer algo, no significa que esto sea imposible.


Por cierto, esto debería ir en conexión a base de datos o Ms Sql Server, Digo es mi opinión.
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #9  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Buenos dias,

Ya que tocas el tema de los archivos udl y como bien dices que el hecho que una persona no sepa como hacer no quiere decir que no se pueda, te agradeceria mucho que me explicaras o pasaras un ejemplo de como se conecta. Te comento que se cuales son los archivos UDL que puedes configurar la conexion sin compilar desde delphi, hasta ahi vamos bien, pero a partir de ahi como le digo a mi componente que utilize este achivo udl para conectarse no he podido hacerlo, lo he intentado de las siguientes formas, en el conection string del adoconection coloco file name = 'c:\prueba\ventas.udl'
'file name = c:\prueba\ventas.udl' , file name = "c:\prueba\ventas.udl", etc,etc. Te agradeceria cualquier ayuda.

Slds,
FRC
Responder Con Cita
  #10  
Antiguo 11-04-2007
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Poder: 20
pepon386 Va por buen camino
Lo único que necesitas para que tu aplicación funcione correctamente es en el evento 'OnWillConnect' del componente TADOConnection asignar el valor de la cadena de conexión a la variable 'ConnectionString':

Código Delphi [-]
procedure TDMMain.ADOConnectionWillConnect(Connection: TADOConnection;
  var ConnectionString, UserID, Password: WideString;
  var ConnectOptions: TConnectOption; var EventStatus: TEventStatus);
begin
  ConnectionString := GetConnectionString;
  EventStatus := esUnwantedEvent;
end;
 
function TDMMain.GetConnectionString;
begin
  Result := MiCadenaDeConexión;
end;
Responder Con Cita
  #11  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Buenos dias,

Y en que momento utilizo la configuracion guardada en el archivo udl???


Slds,
FRC
Responder Con Cita
  #12  
Antiguo 11-04-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Mi amigo, creo que de repente una búsqueda en el foro te sería bastante útil:

aquí un post donde se presentaba tu misma duda con su respectiva solución:

http://www.clubdelphi.com/foros/showthread.php?t=34865

Ahora que te comento, un archivo UDL es en sí, un Ini común y corriente, así que podrias crear una función del tipo:

Código Delphi [-]
With TIniFile.Create(ArchivoUdl) Do
  Result := 'provider=' + ReadString('oledb','Provider','');

Una vez que tienes la cadena de conexión, solo debes asignarla a la propiedad Conexión String de tu objeto conexión.

bueno, pues suerte
__________________
Conoce mi blog http://www.edgartec.com

Última edición por poliburro fecha: 11-04-2007 a las 18:25:10.
Responder Con Cita
  #13  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Buenos dias,

No quiero crear el archivo .ini, no me interesa hacerlo de esa manera, se supone que en el conexion string del componente ado debo poder especificar el archivo de configuracion udl al que quiero hacer referencia, pero no me interesa crear el archivo ini.

Y si he buscado en el foro, lo que pasa que el motor de busquedas funciona en base las palabras que coloques y estas a su vez dependen de como a cada quien se le ocurra nombrar su tema.

Slds,
Responder Con Cita
  #14  
Antiguo 11-04-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por erasmorc
Y si he buscado en el foro, lo que pasa que el motor de busquedas funciona en base las palabras que coloques y estas a su vez dependen de como a cada quien se le ocurra nombrar su tema.
Por eso conviene titular los Hilos lo más descriptivamente posible, porque ayuda no poco a la hora de utilizar el buscador de los Foros.

Pero todos debemos aplicarnos el cuento, incluso tú, si me lo permites, puesto que "Seoane nadie ha podido" no parece un título muy apropiado...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #15  
Antiguo 11-04-2007
argote argote is offline
Miembro
 
Registrado: abr 2007
Posts: 11
Poder: 0
argote Va por buen camino
Erasmoc

Para obtener el listado de todos los servidores de MS SQL, registrados en tu network, debes utilizar el procedimiento almacenado sp_helpserver.
Si utilizas un componente TADOQuery y en la sentencia escribes:
exec sp_helpserver
podrás obtener el listado de los servidores MS SQL y de los LINKED SERVERS. Acá está un ejemplo de como sacar de este componente el listado.
Código Delphi [-]
TForm1.Button1Click(Sender: TObject);
var
  cad : string;
begin

  ADOQuery1.Open;
  ADOQuery1.First;
  while not ADOQuery1.Eof do
    begin
      cad := cad + ADOQuery1.Fields[0].AsString + #13#10;
      ADOQuery1.Next;
    end;
  ShowMessage(cad);
end;

Última edición por vtdeleon fecha: 11-04-2007 a las 19:30:31.
Responder Con Cita
  #16  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bueno erasmorc, la verdad tienes y no razon en que el componente adoconnection configura la direccion de la base de datos en tiempo de ejecucion, por que digo tienes y no, porque en realidad la conexion la necesitas para hacer el programa, no necesariamente para distribuirlo o ejecutarlo.
Si usas un datamodule y un archivo .ini, puedes copiar la ruta que usa el adoconection y cambiarla en el ini muy facilmente.
Un ejemplo con mysql:
En el datamodule:
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
 // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Archivo.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=MSDASQL.1;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=True';//'+
         //    'Password=admin1';
   AC1.ConnectionString := ConStr;
   AC1.Open;
end;
Como veras, al iniciar el datamodule, este busca primero el archivo.ini que contiene lo que quieras, en mi caso el nombre de la base de datos, pero puedes ponerle toda la direccion si es el caso asi:
Archivo.ini:
Cita:
[BD]
Path="Basedatos"
[Logon]
Auto="NO"
Login=""
Pass=""
Al distribuir el ejecutable, se distribuye el archivo.ini, que lo puede modificar cualquiera facilmente.
Bueno espero te sirva de otro ejemplo.
Saludos
Responder Con Cita
  #17  
Antiguo 11-04-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Cita:
Empezado por erasmorc
Buenos dias,

No quiero crear el archivo .ini, no me interesa hacerlo de esa manera, se supone que en el conexion string del componente ado debo poder especificar el archivo de configuracion udl al que quiero hacer referencia, pero no me interesa crear el archivo ini.
Hombre, :|, creo que no me entendiste, el archivo de configuración UDL, es en realidad un archivo INI, si tu abres con el notepad tu archivo UDL encontraras que su estructura es la de un INI.

Oviamente la ventaja del UDL es que al ser ejecutado te levanta el asistente de conexión de ADO. Pero internamente es un INI común y corriente
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #18  
Antiguo 11-04-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.264
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Thumbs up

Cita:
Empezado por argote
Si utilizas un componente TADOQuery y en la sentencia escribes:
exec sp_helpserver
Esta no la conocía...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #19  
Antiguo 11-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Con esto: exec sp_helpserver
A mi me quedan dudas, no me funciona.
Si conecto el adoquery, buscara una tabla con ese nombre,
Si por el contrario no lo conecto, me dira que no tengo conexion.
Como se hace?, seria interesante saberlo.
Saludos
Responder Con Cita
  #20  
Antiguo 11-04-2007
erasmorc erasmorc is offline
Miembro
 
Registrado: ago 2004
Posts: 66
Poder: 20
erasmorc Va por buen camino
Buenas tardes,

Primero que nada gracias a Poliburro, Neftali, Argote y Caral por el interes en el hilo y por sus respuestas atinadas.

Quisiera darle la razon a Neftali en cuanto a la forma de nombrar el hilo, lo nombre asi porque alguna vez vi un codigo publicado por seoane que hacia algo parecido y entonces le pase un mensaje pero no recibi respuesta y pense en esta forma para hacerle llegar el mensaje.

Por otro lado la respuesta de Caral de los archivos .ini conozco el procedimiento y no es realmente lo que quiero.

Entre las respuestas de Poliburro, Neftali y Argote puedo hacer una combinacion y lograr el objetivo deseado, les dejo saber el resultado, de nuevo muchas gracias por el interes.

Slds
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Han podido ejecutar aplicaciones con el Escritorio Remoto? diegolf Conexión con bases de datos 8 10-04-2007 19:00:04
Felicitaciones a Domingo Seoane por sus primeros 1.000 mensajes dec La Taberna 15 16-11-2006 01:48:38
Felicidades Seoane Elenita La Taberna 14 04-11-2006 08:00:46
Nadie Usa Ado? FernanGil Conexión con bases de datos 4 22-09-2003 19:19:17
ora-12154:TNS: NO SE HA PODIDO RESOLVER EL NOMBRE DEL SERVICIO rinaib Oracle 5 04-08-2003 18:55:37


La franja horaria es GMT +2. Ahora son las 07:21:41.


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