• Martes 7 de Mayo de 2024, 21:03

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - rtmex

Páginas: [1]
1
C++ Builder / Re: Capturar la tecla suprimir
« en: Jueves 15 de Enero de 2009, 00:08 »
Debes ponerlo en el evento OnKeyDown

Código: Text
  1.  
  2. void __fastcall TForm1::ListBox1KeyDown(TObject *Sender, WORD &Key,
  3.       TShiftState Shift)
  4. {
  5. if (Key == VK_DELETE)
  6.      ShowMessage("OK");
  7. }
  8.  
  9.  

2
C++ Builder / Re: Crear Campos En Base De Datos
« en: Viernes 9 de Enero de 2009, 01:30 »
En el siguiente ejemplo creo una tabla con 4 campos:

Código: Text
  1.  
  2.         // crea la tabla
  3.         TTable* table;
  4.         try {
  5.              table=new TTable(this);
  6.              table->DatabaseName="base";
  7.              table->TableName="tmp_artsven";
  8.              //agrega las definiciones de cada campo
  9.              table->FieldDefs->Add("CVE_ART",            ftString,13,false);
  10.              table->FieldDefs->Add("ARTICULO",           ftString,37,false);
  11.              table->FieldDefs->Add("MARCA",              ftString,25,false);
  12.              table->FieldDefs->Add("TOTALVENDIDOS",      ftInteger,0,false);
  13.              // todo esta configurado asì que crea la tabla
  14.              table->CreateTable();
  15.              tabla_tmp_artsven->Open();
  16.             }
  17.         catch(...){
  18.                    MessageBox(Handle,"Error al crear la tabla","Error",0);
  19.                    delete table;
  20.                   }
  21.  
  22.  

3
C++ Builder / Re: componente autenticacion
« en: Viernes 9 de Enero de 2009, 01:13 »
Como puedes hacerlo es diseñar en tu base de datos una tabla de usuarios en donde tendras su nombre de usuario y contraseña, debes tener una tabla en donde tangas los diferentes modulos del sistema y una tabla de permisos (que es el resultado de la relación muchos a muchos entre usuarios y modulos). En la tabla de permisos tienes los diferentes permisos (agregar, modificar, eliminar, etc.) esos campos serán boolean o numericos (1 = verdadero, 0 = falso).

En cada modulo checas que permisos tiene el usuario que está firmado para habilitar o deshabilitar botones según sus permisos.

4
C++ Builder / Re: Utilizacion de Query
« en: Viernes 9 de Enero de 2009, 01:02 »
Pon esto en el Query

select clave_empleado,nombre
from empleado
where clave_empleado like "%"+:clave;

Y desde el código en donde mandes a llamar a tu query, asigna al parámetro el valor que quieres con el % al final.
En el ejemplo siguinete, llena un combobox con los nombres de todos los empleados cuya clave tenga la palabre vent en alguna parte:

Código: Text
  1.  
  2.  Query1->ParamByName("clave")->AsString = "VENT%";
  3.  Query1->Open();
  4.  while (!Query1->Eof)
  5.        {
  6.         ComboBox1->Items->Add(Query1->FieldByName("nombre")->AsString);
  7.         Query1->Next();
  8.        }
  9.  Query1->Close();
  10.  
  11.  

5
C++ Builder / Re: Cargar Imagen A Bd Firebird
« en: Viernes 9 de Enero de 2009, 00:13 »
Debes poner los campos persistentes en el dataset.
Para seleccionar el archivo de imagen que vas a guardar, puedes hacerlo por medio de un control OpenDialog.
En el siguiente ejemplo utilizo archivos JPG (necesitas hacer el include de jpeg.hpp)

El código que iria en el evento OnClick del botón que el usuario pulsaría para seleccionar el archvio seria algo asi (El objeto TImage se llama ima_empleado):

if (opndlg_archfoto->Execute())  
    ima_empleado->Picture->LoadFromFile(opndlg_archfoto->FileName);
   
Para grabar en la tabla de FireBird (Aqui estoy usando un TIBDataSet que se llama IBDS_perobra, y el nombre del campo persistente en donde se guarda la foto es FOTO_EMPLEADO)

IBDS_perobraFOTO_EMPLEADO->LoadFromFile(opndlg_archfoto->FileName);

Para recuperar la imagen de la tabla de FireBird :

if (IBDS_perobra->FieldByName("foto_empleado")->IsNull)
     ima_empleado->Picture->Graphic = NULL;
 else
     {
      TIBBlobStream *BS = new TIBBlobStream;
      BS->Mode=bmWrite;
      BS->LoadFromStream(IBDS_perobra->CreateBlobStream(IBDS_perobraFOTO_EMPLEADO , bmRead));
      std::auto_ptr<TJPEGImage> Graphic(new TJPEGImage);
      Graphic->LoadFromStream(IBDS_perobra->CreateBlobStream(IBDS_perobraFOTO_EMPLEADO, bmRead));
      ima_empleado->Picture->Graphic = Graphic.get();
      delete BS;
     }

Y eso es todo :)

Páginas: [1]