Veré a ver que logro para hacer la conexión...lo que quiero es ejecutar el soft en cualquier pc.....probaré y les cuento
Si lo sigues haciendo apuntando al archivo simplemente no lo vas a conseguir, Debes hacerlo apuntando al servidor no al archivo.

Escrito 16 agosto 2011 - 12:53
Veré a ver que logro para hacer la conexión...lo que quiero es ejecutar el soft en cualquier pc.....probaré y les cuento
Escrito 16 agosto 2011 - 12:54
Escrito 16 agosto 2011 - 07:29
Escrito 17 agosto 2011 - 11:59
si es para SQL sever:
delphi
SQL Server ODBC Connection String - Database Login Driver={SQL Server};Server=myservername;Database=mydemodb;Uid=myusername;Pwd=mypasswd; SQL Server ODBC Connection String - Trusted Connection Driver={SQL Server};Server=mysername;Database=mydemodb;Trusted_Connection=yes; SQL Server OLEDB Connection String - Database Login Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;User Id=myusername;Password=mypasswd; SQL Server OLEDB Connection String - Trusted Connection Provider=sqloledb;Data Source=myservername;Initial Catalog=mydemodb;Integrated Security=SSPI; SQL Server .Net Connection String - Database Login Server=myservername;Database=mydemodb;User ID=myusername;Password=mypasswd;Trusted_Connection=False SQL Server .Net Connection String - Trusted Connection Server=myservername;Database=mydemodb;Integrated Security=SSPI;
Escrito 18 agosto 2011 - 12:27
delphi
[BD] Path="C:\Clients2010\Mibase.MDF"
Es errónea la manera en que estás conectandote a Sql Server por lo siguiente:
1- Las conexiones apuntan al servidor de base de datos, no a los archivos de datos.
2 - La conexión a la base de datos se realiza una vez conectado al servidor y la referencia es por el nombre de la base de datos nunca por el archivo.
Aclarados esos dos puntos la cadena de conexión en el componente TADOConnection debe quedar de la forma:
Provider=SQLNCLI;Data Source=.\INSTANCIASERVIDOR;Initial Catalog=NOMBREBASEDATOS;User Id=USUARIO;Password=PASSWORD;
Ahora bien. Puedes utilizar un archivo udl en lugar de un ini para armar tu cadena de conexión y almacenarla.
Escrito 18 agosto 2011 - 11:48
Escrito 18 agosto 2011 - 12:15
OnCreate del datamodule:[BD]
Path="C:\Clients2010\"
[Logon]
Auto="No"
Login=""
Pass=""
procedure TDataModule1.DataModuleCreate(Sender: TObject); Var BaseDeDatos, ConStr : String; IniFile: TIniFile; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini'); BasedeDatos := IniFile.ReadString('BD','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := ' Provider = sqloledb; '+ ' Data Source = '+BaseDeDatos+';'+ // la direccion donde esta la BD ' Initial Catalog = A ;'+ // A = al nombre de la BD ' User Id = U; '+ // U = Al nombre del usuario ' Password = C'; // C = a la clave o contraseña AdoConnection1.ConnectionString := ConStr; AdoConnection1 .Open; end;
Escrito 18 agosto 2011 - 12:39
Escrito 18 agosto 2011 - 12:45
Hola
INI:
OnCreate del datamodule:[BD]
Path="C:\Clients2010\"
[Logon]
Auto="No"
Login=""
Pass=""
delphi
procedure TDataModule1.DataModuleCreate(Sender: TObject); Var BaseDeDatos, ConStr : String; IniFile: TIniFile; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini'); BasedeDatos := IniFile.ReadString('BD','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := ' Provider = sqloledb; '+ ' Data Source = '+BaseDeDatos+';'+ // la direccion donde esta la BD ' Initial Catalog = A ;'+ // A = al nombre de la BD ' User Id = U; '+ // U = Al nombre del usuario ' Password = C'; // C = a la clave o contraseña AdoConnection1.ConnectionString := ConStr; AdoConnection1 .Open; end;
Saludos
Escrito 18 agosto 2011 - 12:59
Escrito 18 agosto 2011 - 01:03
procedure TDataModule1.DataModuleCreate(Sender: TObject); Var BaseDeDatos, ConStr : String; IniFile: TIniFile; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Inicio.ini'); BasedeDatos := IniFile.ReadString('BD','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := ' Provider = sqloledb; '+ ' Data Source = '+BaseDeDatos+';'+ ' Initial Catalog = MiBase.mdf '; AdoConnection1.ConnectionString := ConStr; AdoConnection1 .Open; end;
Escrito 18 agosto 2011 - 01:09
Hola
Vamos de cero:
1- El archivo INI que creaste TIENE que estar en el mismo directorio que el programa, osea el exe.
2- Del archivo INI se obtiene la direccion, para eso es.
3- Si no se tiene NI usuario, ni clave estos estan en BLANCO.
Intenta esto (SIN CAMBIAR NADA DE NADA), copia y pega.
A ver que error manda:
delphi
procedure TDataModule1.DataModuleCreate(Sender: TObject); Var BaseDeDatos, ConStr : String; IniFile: TIniFile; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Inicio.ini'); BasedeDatos := IniFile.ReadString('BD','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := ' Provider = sqloledb; '+ ' Data Source = '+BaseDeDatos+';'+ ' Initial Catalog = MiBase.mdf '; AdoConnection1.ConnectionString := ConStr; AdoConnection1 .Open; end;
Saludos
Escrito 18 agosto 2011 - 01:13
Escrito 18 agosto 2011 - 01:24
Hola
Pareciera que necesita usuario y clave, no lo se.
No puede conectar con la BD, se necesita autorizacion.
Pregunto:
Por que no cambias de BD a ACCESS, por lo menos momentáneamente, la conexion y todo sera lo mismo, pero podre guiarte con mucha mas propiedad.
Creo que para empezar access es la mejor alternativa.
Saludos
Escrito 18 agosto 2011 - 01:50
Escrito 18 agosto 2011 - 01:56
Hola
En mi empresa trabaje hasta hace poco con access, ya tenia mas de 6 años funcionando, imagínate que cantidad de registros.
Estaba en RED y ocho ordenadores.
Para una empresa pequeña es una BD muy buena, la verdad a mi me gusta.
Ahora uso firebird pero mas que nada por que puedo entrar desde mi casa al programa.
Con relacion a que descargar no se con exactitud, nunca he trabajado con sql server, de hecho no lo conozco.
Saludos
Escrito 18 agosto 2011 - 02:04
Escrito 18 agosto 2011 - 06:52
Reg3 := nil; try Reg3 := TRegistry.Create(KEY_QUERY_VALUE); Reg3.RootKey :=HKEY_LOCAL_MACHINE; if Reg3.OpenKey('\Software\Telycom\POS\Sucursal\Sitio',True) then begin try Result := Reg3.ReadString('ServSit'); If Result <> '' then Begin Servidor:= Result; FrmCfgAvanzada.EdServidorSucursal.Text:=Result; End; Result := Reg3.ReadString('UsSit'); If Result <> '' then Begin sUsuario:= Result; FrmCfgAvanzada.EdUsuarioSucursal.Text:=Result; End; Result := Reg3.ReadString('RevSit'); If Result <> '' then Begin Contrasenia:= Result; FrmCfgAvanzada.EdContraseniaSucursal.Text:=Result; End; Result := Reg3.ReadString('BDDSit'); If Result <> '' then Begin Base:= Result; FrmCfgAvanzada.EdBaseSucursal.Text:=Result; End; except Begin Reg3.CloseKey; FrmCfgAvanzada.ShowModal; raise; End; end; Reg3.CloseKey; end else Begin FrmCfgAvanzada.ShowModal; raise Exception.Create(SysErrorMessage(GetLastError)); end except Begin FrmCfgAvanzada.ShowModal; Reg3.Free; end; raise; end; Reg3.Free; Md.Conexion.ConnectionString:='Provider=SQLNCLI.1;Password=' + Contrasenia + ';Persist Security Info=True;User ID='+ sUsuario +';Initial Catalog='+ Base +';Data Source='+ servidor; MD.Conexion.Open;
Escrito 18 agosto 2011 - 11:30
Hola,
siguiendo el hilo, la configuración que tengas de tu conexion en tiempo de diseño es reemplazada por la que leas de tu archivo ini, te recomiendo que cuando compiles o hagas tu archivo ejecutable cierres la conexion, para que asi tu aplicación no tenga una conexion activa cuando se ejecute por primera vez, eso me pasa cuando cambio algo en las tablas o consultas, automaticamente se activa o abre la conexion, cuando se genera el ejecutable y me lo llevo a otra computadora me sale error de conexion porque se queda configurada mi base de datos de prueba, claro esta, despues de unas lineas de codigo toma la base de datos que debe de ser y se conecta y funciona, pero me deja en mala posición el error de conexion del inicio. es por eso que cierro la conexion en tiempo de diseño.
por otro lado veo o mejor dicho que la mayoria de mis compañeros utilizan configuraciones por medio de archivos ini. yo prefiero usar el registro de windows. asi evito que me borren el archivo ini o que alguien con un poco mas de criterio vea información de más. si lo hago en el registro de windows es mas complejo que sepan en que parte y que variables pertenecen al sistema. te pongo en ejemplo de como se lee el registro para abrir la base de datos. porque la forma de guardar en el esta en otra parte de codigo.
delphi
Reg3 := nil; try Reg3 := TRegistry.Create(KEY_QUERY_VALUE); Reg3.RootKey :=HKEY_LOCAL_MACHINE; if Reg3.OpenKey('\Software\Telycom\POS\Sucursal\Sitio',True) then begin try Result := Reg3.ReadString('ServSit'); If Result <> '' then Begin Servidor:= Result; FrmCfgAvanzada.EdServidorSucursal.Text:=Result; End; Result := Reg3.ReadString('UsSit'); If Result <> '' then Begin sUsuario:= Result; FrmCfgAvanzada.EdUsuarioSucursal.Text:=Result; End; Result := Reg3.ReadString('RevSit'); If Result <> '' then Begin Contrasenia:= Result; FrmCfgAvanzada.EdContraseniaSucursal.Text:=Result; End; Result := Reg3.ReadString('BDDSit'); If Result <> '' then Begin Base:= Result; FrmCfgAvanzada.EdBaseSucursal.Text:=Result; End; except Begin Reg3.CloseKey; FrmCfgAvanzada.ShowModal; raise; End; end; Reg3.CloseKey; end else Begin FrmCfgAvanzada.ShowModal; raise Exception.Create(SysErrorMessage(GetLastError)); end except Begin FrmCfgAvanzada.ShowModal; Reg3.Free; end; raise; end; Reg3.Free; Md.Conexion.ConnectionString:='Provider=SQLNCLI.1;Password=' + Contrasenia + ';Persist Security Info=True;User ID='+ sUsuario +';Initial Catalog='+ Base +';Data Source='+ servidor; MD.Conexion.Open;
cuando se genera un error porque las variables no existen en el registro de windows por ser la primera vez que se ejecuta la aplicación, abro la ventana de configuración para que se creen.
espero te sirva de ayuda
Escrito 19 agosto 2011 - 02:16
Ahora cambia el codigo del datamodule por este, copialo y pegalo:[DI]
Path="C:\Clients2010\"
[BD]
BaseD="MiBase.mdf"
[US]
Name=" "
[PS]
Clave=" "
Var BaseDeDatos, ConStr, Base, User, Pass : String; IniFile: TIniFile; begin IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'TUINI.ini'); BasedeDatos := IniFile.ReadString('DI','Path',''); //La direccion del INI Base:= IniFile.ReadString('BD','BaseD',''); //La BD del INI User:= IniFile.ReadString('US','Name',''); //El Usuario del INI Pass:= IniFile.ReadString('PS','Clave',''); //La Clave del INI If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := ' Provider = sqloledb; '+ ' Data Source = '+BaseDeDatos+';'+ ' Initial Catalog = '+Base+';'+ ' User Id = '+User+';'+ ' Password = '+Pass; AdoConnection1.ConnectionString := ConStr; AdoConnection1.Open;