Cita:
Empezado por ecfisa
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
public
end;
var
frmUsuarios: TfrmUsuarios;
implementation
uses DataModulo;
{$R *.dfm}
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.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;
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.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.