Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

POR FAVOR AYUDA!!!!

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

Hola, necesito una ayudita, resulta que estoy desrrollando una aplicaciòn con bases de datos access y tengo 2 problemas:
tengo un dato que es entregado por el usuario en un TEdit y debe ser un còdigo numérico, entonces para utilizar el número dentro del programa lo convierto mediante StrToInt(Edit->Text). Necesito proteger el programa para que si se ingresan caracteres yo pueda arrojar un mensaje de error, pero no he podido, trato con try, pero no me resulta.
Lo otro es que necesito ordenar mi base de datos de acuerdo a una combinación de datos de 2 columnas, pero no logro crear índices compuestos(creo que esto no se puede hacer para access).....O por último poder presentar el QReport ordenado.
Por favor si alguien puede ayudarme, lo agradeceré mucho.
Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

HOLA, al tratar de validar los datos que están siendo ingresados el try y Catch
no sirven ya que estos verifican cosas como (algo dividivo por cero) en donde tu programa
se cae o podría quedar pegado, ok eso es lo primero.

Para validar lo que estas ingresando en un TEdit lo puedes hacer mediante el evento OnKeyPress por ejemplo:

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key>='a')&&(Key<='z'))
{ Label1->Caption=Key;
}
}

Este código mostrará en el Label solamente las letras entre la a y z minusculas, si presionas un número o MAYUSCULAS no pasará nada, OK

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

Hola Romina,

solo te puedo ayudar con la primera pregunta, porque de bases de datos, ni idea (de momento).

Si quieres mostrar un mensaje de error cada vez que el usuario introduce un caracter no numérico prueba a poner el siguiente código en el evento OnKeyPress del Edit:

if((Key<'0')| |(Key>'9'))
ShowMessage("ERROR");

Otra forma de impedir que el usuario introduzca estos caracteres es que simplemente no se escriban en el Edit, para ello escribes en el mismo evento el siguiente código:

if((Key<'0')| |(Key>'9'))
Edit->ReadOnly=true;


Espero que te sirva de ayuda.
Un saludo!

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

y por último

en la forma debes tener un DBGrid1,DataSource1 y Query1 ok

ahora los debes enlazar (en las propiedades del objeto o por código)

Query1->DatabaseName=TuBase (el Alias)
DataSource1->DataSet=Query1;
DBGrid1->DataSource=DataSource1;

OK ahora a lo que interesa

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from tabla where edad > 18 order by rut,edad");
Query1->ExecSQL();

prueba a ver que pasa, quizá falte algún enlace entre los componentes,espero haber ayudado. CHAOOO.

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

y por último

en la forma debes tener un DBGrid1,DataSource1 y Query1 ok

ahora los debes enlazar (en las propiedades del objeto o por código)

Query1->DatabaseName=TuBase (el Alias)
DataSource1->DataSet=Query1;
DBGrid1->DataSource=DataSource1;

OK ahora a lo que interesa

Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from tabla where edad > 18 order by rut,edad");
Query1->ExecSQL();

prueba a ver que pasa, quizá falte algún enlace entre los componentes,espero haber ayudado. CHAOOO.

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

Hola.
Con respecto a los indices de access, si se pueden crear compuestos en access. En la tabla de indices pones en "Nombre de indice" un nombre para el indice compuesto, en "Nombre de campo" uno de los campos(una de las columnas). Debajo, en la siguiente fila, deja vacío "Nombre de indice" y pones el otro campo en "Nombre de campo". Ya esta creado el indice compuesto Wink

Hasta otra

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

Hola Romina, para evitar que alguien escriba algo que no sea un numero en un Edit, lo mas sencillo es poner en el evento OnKeyPress del Edit:

if((Key<'0')| |(Key>'9'))
{Key=0;}

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

puedes hacer esto
if(!isdigit(Key))
Key = 0;

en el evento OnKeyPress para que solo resiva numeros
pero si lo que quieres es mostrar el error claro que lo puedes hacer con try y catch
su poniendo ue lo tienes en un Edit1
try
{
IntToStr(Edit1->Text);

}
catch(...)
{
ShowMessage("Tu mensaje");

}
mientras estas compilando se salta al error que presenta el compilador pero ya cuando la corres desde el exe ya funciona perfectamente......

para presentar el report ordenado puedes tomar un Query y en la propiedad SQl despues que introduces la consulta la ordenas con order by campo,campo1,campon

Volver arriba
Mensaje    Asunto: POR FAVOR AYUDA!!!! Responder citando

Hola Romina

Con respecto a la primera pregunta, yo uso atoi(Edit1->Text.c_str());

Esta función te convierte el texto a entero, de no encontrar nada o sólo caracteres te devuelve cero, si también se encuentra números te convierte hasta el primer carácter no numérico.

De base de datos no tengo ni idea
Saludos.

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.