Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Conectar a SQL Server desde código

Hola

Estube buscando información de como realizar una conexión manual, es decir, por codigo a una Base de SQL Server 2000 / 2005

Hace un tiempo realice este proceso para conectar a una Base de Interbase...

Código Delphi [-]
Datos.IBD_Propint.Connected := False;
Datos.IBD_Propint.LoginPrompt := False;
Datos.IBD_Propint.DatabaseName := Nombre_Base;
Datos.IBD_Propint.Params.Values ['user_name'] := vUsu.Text;
Datos.IBD_Propint.Params.Values ['password'] := vPas.Text;
try
   Datos.IBD_Propint.Connected := True;
   Parametro := TiniFile.Create('D:\Sistemas\Propint\config.ini');
   Parametro.WriteString('BaseDato','Servidor',Datos.IBD_Propint.DatabaseName);
   Parametro.WriteString('BaseDato','Usuario',Datos.IBD_Propint.Params.Values ['user_name']);
   Parametro.WriteString('BaseDato','Clave',Datos.IBD_Propint.Params.Values ['password']);
   ShowMessage('Base de Dato ya fue asignada');
except
    ShowMessage('Error de conexión, ingrese ruta nuevamente');
end

La idea es realizar algo parecido... pero no se como debo pasar los parametros a TADOConection

cuando se configura me muestra esto

Código:
 
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=Administrador;Initial Catalog=Biovial;Data Source=SERVER
La idea es poder configurar el nombre del servidor.. ya que la base se llama igual. y poder guardar los datos en un Archivo Ini...

si alguien sabe.. favor indicar...

Salu2
__________________
BlueSteel
Responder Con Cita
  #2  
Antiguo 03-04-2008
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Conexión por Codigo

En realidad lo que debes hacer es armar esa cadena de conexion

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=Administrador;Initial Catalog=Biovial;Data Source=SERVER

y pasarle a la propiedad Connection String del Componente TADOConnection.

Aunque lo que prefiero hacer es crear un archivo de conexión UDL (Data conecction File) y cargarlo en tiempo de ejecución pasandole a la misma propiedad e la siguiente forma:
ConnectionString := 'FILE NAME=C:\MIARCHIVO.UDL';

Saludos

Última edición por jcarteagaf fecha: 03-04-2008 a las 22:32:00.
Responder Con Cita
  #3  
Antiguo 04-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Para SQL Server 2000
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
var ini: TIniFile;
begin

  ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'Conexion.ini');
  try
     UsuarioBase:=ini.ReadString('Principal', 'Usuario', '');
     Clave:=ini.ReadString('Principal', 'Clave', '');
     Base:=ini.ReadString('Principal', 'BaseDatos', 'BasePredeterminada');
     Servidor:=ini.ReadString('Principal', 'Servidor', 'ServidorPredeterminado');
     Alias:=ini.ReadString('Principal', 'Alias', 'ODBCPredeterminado');
  finally
    ini.Free;
  end;
  with COnexion do begin //Conexión es un TADOConnection, pero puedes usar lo que quieras.
   If not Connected then begin
    ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False'+
    ';User ID='+QuotedStr(UsuarioBase)+
    ';PassWord='+QuotedStr(Clave)+
    ';Initial Catalog='+QuotedStr(Base)+
    ';Data Source='+QuotedStr(Servidor);
    Connected := True;
   end;
  end;

end;

PUedes crear una función que reciba como parámetro que sección de archivo ini quieres utilizar, de esa forma podrías conectarte a varios lados con solo cambiar la sección ("Principal" en el ejemplo anterior) de donde obtienes los datos de conexión.
__________________


Última edición por ContraVeneno fecha: 04-04-2008 a las 00:45:57.
Responder Con Cita
  #4  
Antiguo 04-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Gracias ContraVeneno

Justo lo que andaba buscando...

lo probaré inmediatamente...

Salu2
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 08-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Cool

Hola ContraVeneno

mira.. implemente el codigo que me enviastes y me funciona bien.. aunque he tenido un problema...

Vamos por paso...

Cree un formulario para conexión con base de datos, en donde ingreso el servidor, el usuario, la clave y nombre de la base....

cuando ingreso a dicho formulario realizo esto
Código Delphi [-]
     if FileExists('D:\Sistemas\Biovial\config.ini') Then
        Begin
             Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
             vSer.Text := Parametro.ReadString('BaseDato','Servidor',' ');
             vUsu.Text := Parametro.ReadString('BaseDato','Usuario',' ');
             vPas.Text := Parametro.ReadString('BaseDato','Clave',' ');
             vBas.Text := Parametro.ReadString('BaseDato','Base',' ');
             Parametro.Free;
        End
     Else
        ShowMessage('Debe Ingresar Información de Base de Datos para continuar');

es decir, pregunta si existe el archivo .ini.. si es así me rescata los datos y me los pasa a los Edits correspondientes... de lo contrario me envia para ingresar los datos.

Con el sgte codigo conecto la base de datos.. y esto me funciona super... y los mismos datos que ingrese los almaceno en el archivo .ini... se supone que si no esta creado el archivo .ini me lo crea, de lo contrario solo actualiza...

Código Delphi [-]
     if Datos.ADBiovial.Connected Then Datos.ADBiovial.Connected := False;
     Datos.ADBiovial.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False'+
                                         ';User ID='+QuotedStr(vUsu.Text)+
                                         ';Initial Catalog='+QuotedStr(vBas.Text)+
                                         ';PassWord='+QuotedStr(vPas.Text)+
                                         ';Data Source='+QuotedStr(vSer.Text);
     try
        Datos.ADBiovial.Connected := True;
        Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
        Parametro.WriteString('BaseDato','Servidor',vSer.Text);
        Parametro.WriteString('BaseDato','Usuario',vUsu.Text);
        Parametro.WriteString('BaseDato','Clave',vPas.Text);
        Parametro.WriteString('BaseDato','Base',vBas.Text);
        Parametro.Free;
        ShowMessage('Base de Dato ya fue asignada');
     except
        ShowMessage('Error de conexión, ingrese ruta nuevamente');
        vSer.SetFocus;
     end


el problema se me genera cuando ingreso al sistema, lo que realizo en el Evento onCreate del formulario principal (Menu)... es lo sgte

Código Delphi [-]
procedure TMenu.FormCreate(Sender: TObject);
Var
   Parametro:Tinifile;
begin
     // Pregunto si existe el directorio, de lo contrario lo creo...
     If not DirectoryExists('D:\Sistemas\Biovial') Then
        Begin
            {$I-}
            MkDir('D:\Sistemas\Biovial');
        End;
     // Pregunto si existe el archivo, de lo contrario envio a Form Conexion_Base para crear archivo y conectar
     if FileExists('D:\Sistemas\Biovial\config.ini') Then
        Begin
             Parametro := TiniFile.Create('D:\Sistemas\Biovial\config.ini');
             Try
                vSer := Parametro.ReadString('BaseDato','Servidor',' ');
                vUsu := Parametro.ReadString('BaseDato','Usuario',' ');
                vPas := Parametro.ReadString('BaseDato','Clave',' ');
                vBas := Parametro.ReadString('BaseDato','Base',' ');
             Finally
                Parametro.Free;
             End;
             With Datos.ADBiovial Do  // Ruta al Formulario y Componente ADOConection
                  Begin
                      if not Connected Then
                         Begin // Aqui paso todos los parametros y conecto...
                              ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False'+
                                                  ';User ID='+QuotedStr(vUsu)+
                                                  ';PassWord='+QuotedStr(vPas)+
                                                  ';Initial Catalog='+QuotedStr(vBas)+
                                                  ';Data Source='+QuotedStr(vSer);
                              Connected := True;
                              ShowMessage('Base conectada');
                         End
                  End;
        End
     Else
        Begin
             ShowMessage('Debe Seleccionar Base de Datos para continuar');
             Base_Conexion := TBase_Conexion.Create(Self);
             Try
                Base_Conexion.ShowModal;
             Finally
                Base_Conexion.Free;
             End;
        End;
end;

Bueno, esto último me genera el siguiente error...

Project Biobial.exe raised exception class EAccessViolation with message 'Access violation at address 004D5C69 in module BioBial.exe'. Read of address 00000058'.

Aunque el error siempre aparece... presiono Ok.. y se puede ejecutar el sistema ... es decir igual conecta

y realizo la compilación paso a paso el error se marca aquí

Código Delphi [-]
  With Datos.ADBiovial Do  // Ruta al Formulario y Componente ADOConection

Que podra ser ??
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 08-04-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
a caray, pues no sabría decirte exactamente por que, puede ser que el módulo de datos no este creado todavía y por eso te marque ese error. Digo, ese error se genera siempre que quieres accesar a algo que todavía no ha sido creado. Verifica el orden en que se crean las cosas, si primero el módulo de datos y luego tu formulario o primero el formulario y luego el módulo de datos.
__________________

Responder Con Cita
  #7  
Antiguo 09-04-2008
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.293
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 BlueSteel Ver Mensaje
y realizo la compilación paso a paso el error se marca aquí...
Puede ser que e ese punto todavía no esté disponible Datos (Datamodule supongo) o ADBiovial (componente).

Utiliza Assigned para comprobarlo.
__________________
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
  #8  
Antiguo 10-04-2008
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Ok...

Gracias.. ya lo solucione...

el problema era que el orden de creación de los Form era

Menu ->
Datos ->
Form1
...
Formx

y lo que hice fue poner el Form Datos en primer lugar..

Salu2 y gracias
__________________
BlueSteel
Responder Con Cita
Respuesta



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
Conectar a Interbase por codigo desde Builder C++ Gabo C++ Builder 7 01-05-2015 11:04:54
Ayuda con onexion a sql server 2000 con ado por codigo desde delphi 6 FAGD Conexión con bases de datos 2 26-02-2008 17:24:08
Conectar a SQL Server y Windows 2003 Server Punzo MS SQL Server 2 11-12-2007 20:30:40
conectar por codigo un BD access GustavoCruz Conexión con bases de datos 6 03-08-2007 17:43:05
conectar M$Sql Server con ADO.NET desde Delphi8 bismarito Conexión con bases de datos 5 24-07-2004 20:02:00


La franja horaria es GMT +2. Ahora son las 11:37:13.


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