Ver Mensaje Individual
  #5  
Antiguo 08-12-2012
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 608
Reputación: 21
mRoman Va por buen camino
GRANT no funciona

Cita:
Empezado por ecfisa Ver Mensaje
Hola mRoman.

Muy probablemente sea la causa. La versión que uso es la 2.5 y el ejemplo lo hice en Delphi 7.

Saludos.
Ok...sabes que ecfisa, solicitanto tu apoyo y el de los demas foreros.....

este es el codigo q estoy tratando de que funcione:
Código Delphi [-]
unit Usuarios;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IBServices, StdCtrls, Buttons, Mask, ExtCtrls, DBCtrls, Grids,
  DBGrids, DB, IBCustomDataSet, IBQuery, sSkinProvider, IBSQL;

type
  TfrmUsuarios = class(TForm)
    ibUsuario: TIBSecurityService;
    btnCrear: TBitBtn;
    edUserName: TEdit;
    edFirstName: TEdit;
    edMiddleName: TEdit;
    edLastName: TEdit;
    mskPassword: TMaskEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    cbxInstitucion: TDBLookupComboBox;
    Label6: TLabel;
    dSoInstitucion: TDataSource;
    qryInstitucion: TIBQuery;
    Label7: TLabel;
    cbxCT: TDBLookupComboBox;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    dSoCT: TDataSource;
    qryCT: TIBQuery;
    Label8: TLabel;
    sSkinProvider1: TsSkinProvider;
    qryUsuarios: TIBQuery;
    dSoUsuarios: TDataSource;
    dsUsuario: TIBDataSet;
    cbxRoles: TComboBox;
    btnBorrar: TBitBtn;
    IBSQLRol: TIBSQL;
    procedure btnCrearClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure cbxCTExit(Sender: TObject);
    procedure Panel1Exit(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure btnBorrarClick(Sender: TObject);
    procedure Panel1Enter(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmUsuarios: TfrmUsuarios;

implementation
uses DataModulo;
{$R *.dfm}

{function ArchivosCarpeta(Carpeta, Mascara: String; IncluirPath, IncluirOcultos: Boolean): tStringList;
var DirInfo: TSearchRec;
    I, TiposDeArchivo: Integer;
begin
  Result := tStringList.Create;
  TiposDeArchivo := faAnyfile -faSysFile -faDirectory;
  if not IncluirOcultos then
      TiposDeArchivo := TiposDeArchivo -faHidden;
  I := FindFirst(IncludeTrailingPathDelimiter(Carpeta) + Mascara, TiposDeArchivo, DirInfo);
  while I = 0 do
  begin
    if (DirInfo.Name <> '.') and (DirInfo.Name <> '..') then
    begin
      if IncluirPath then
          Result.Add(IncludeTrailingPathDelimiter(Carpeta) + ExtractFileName(DirInfo.Name))
      else
          Result.Add(ExtractFileName(DirInfo.Name));
    end;
    I := FindNext(DirInfo);
  end;
  FindClose(DirInfo);
end;}

procedure TfrmUsuarios.btnCrearClick(Sender: TObject);
begin
    if btnCrear.Caption='Crear' then
    begin
        ibusuario.UserName:=edUserName.Text;
        ibUsuario.FirstName:=edFirstName.Text;
        ibUsuario.MiddleName:=edMiddleName.Text;
        ibUsuario.LastName:=edLastName.Text;
        ibUsuario.Password:=mskPassword.Text;
//        ibUsuario.Attach;
        ibUsuario.AddUser;
        ibUsuario.Detach;

        IBSQLRol.Close;
        IBSQLRol.SQL.Clear;
        IBSQLRol.SQL.Add('GRANT ' +cbxRoles.Text+ ' TO '+edUserName.Text);
        IBSQLRol.Prepare;
        IBSQLRol.ExecQuery;
        DataModule2.trsCasas.Commit;

        dsUsuario.Close;
        dsUsuario.ParamByName('ct_clave').AsInteger:=cbxCT.KeyValue;
        dsUsuario.ParamByName('inter_clave').AsInteger:=cbxInstitucion.KeyValue;
        dsUsuario.ParamByName('nombre_usuario').AsString:=edUserName.Text;
        dsUsuario.Open;
        dsUsuario.Append;
        dsUsuario.FieldByName('USUARIO_CT_CLAVE').AsInteger:=cbxCT.KeyValue;
        dsUsuario.FieldByName('USUARIO_NOMBRE').AsString:=edUserName.Text;
        dsUsuario.FieldByName('USUARIO_INTER_CLAVE').AsInteger:=cbxInstitucion.KeyValue;
        dsUsuario.FieldByName('USUARIO_NOMBRE_PILA').AsString:=edFirstName.Text;
        dsUsuario.FieldByName('USUARIO_APELLIDO_PATERNO').AsString:=edMiddleName.Text;
        dsUsuario.FieldByName('USUARIO_APELLIDO_MATERNO').AsString:=edLastName.Text;
        dsUsuario.Post;
        dsUsuario.ApplyUpdates;
        DataModule2.trsCasas.Commit;
    end Else
    begin
        ibusuario.UserName:=edUserName.Text;
        ibUsuario.FirstName:=edFirstName.Text;
        ibUsuario.MiddleName:=edMiddleName.Text;
        ibUsuario.LastName:=edLastName.Text;
        ibUsuario.Password:=mskPassword.Text;
        ibUsuario.Attach;
        ibUsuario.ModifyUser;
        ibUsuario.Detach;
    end
end;

procedure TfrmUsuarios.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Action:=caFree;
end;

procedure TfrmUsuarios.FormShow(Sender: TObject);
var
   sr:TSearchRec;
begin
    ibUsuario.Active:=True;
    cbxRoles.Items.Clear;
    if FindFirst('c:\CISistema\Roles\*.ibg',faArchive, sr)=0 then
    begin
        repeat
            cbxRoles.Items.Add(copy(sr.Name,1,length(sr.Name)-4));
        until FindNext(sr)<>0;
        FindClose(sr);
    end;
//    cbxRoles.Items:=ArchivosCarpeta('C:\CISistema\Roles\','*.ibg',False,False);
end;

procedure TfrmUsuarios.cbxCTExit(Sender: TObject);
begin
    qryInstitucion.Close;
    qryInstitucion.ParamByName('CT_CLAVE').AsInteger:=cbxCT.KeyValue;
    qryInstitucion.Open;
    qryInstitucion.FetchAll;

end;

procedure TfrmUsuarios.Panel1Exit(Sender: TObject);
begin
    qryUsuarios.Close;
    qryUsuarios.ParamByName('INTER_CLAVE').AsInteger:=cbxInstitucion.KeyValue;
    qryUsuarios.ParamByName('CT_CLAVE').AsInteger:=cbxCT.KeyValue;
    qryUsuarios.Open;
end;

procedure TfrmUsuarios.DBGrid1CellClick(Column: TColumn);
begin
     btnCrear.Caption:='Modificar';
     btnBorrar.Enabled:=True;
     edUserName.Text:=qryUsuarios.fieldbyname('usuario_nombre').AsString;
end;

procedure TfrmUsuarios.btnBorrarClick(Sender: TObject);
begin
//        ibusuario.UserName:=edUserName.Text;
        ibUsuario.Attach;
        ibUsuario.DeleteUser;
        ibUsuario.Detach;
end;

procedure TfrmUsuarios.Panel1Enter(Sender: TObject);
begin
    edUserName.Text:='';
    edFirstName.Text:='';
    edMiddleName.Text:='';
    edLastName.Text:='';
    mskPassword.Text:='';
    cbxRoles.ItemIndex:=-1;
    DataModule2.trsCasas.Active:=False;
    DataModule2.trsCasas.StartTransaction;
    qryCT.Close;
    qryCT.Open;
    qryCT.FetchAll;
    btnBorrar.Enabled:=False;
end;

end.

Estoy usando los siguientes componentes:
TIBSecurityService.- Para crear los usuarios en el security2.fdb
TIBSQL.-Para asignarle el ROL a los usuarios (previamente creado desde el IBManager con sus privilegios).
TIBQuery.- Para obtener algunos registros de algunas tablas.
TIBDataSet.- Para registrar a los usuarios creados (en mi base de datos...no confundir con security2.fdb).

Ya desinstale el Firebird 1.5 e instale la 2.5, uso Delphi6 con Win 7 ultimate.

Saludos y espero me puedan auxiliar....gracias por su tiempo muchachos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita