Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   un problemita...! por favor ayuda..! plis (https://www.clubdelphi.com/foros/showthread.php?t=29355)

CrystalBlood 19-01-2006 19:49:30

un problemita...! por favor ayuda..! plis
 
les voy a comentar mi conflicto...! ^^
estoy usando Delphi 7
con Interbase :-D
tengo una tabla con el nombre "USUARIOS" ke contienen los sgte's campos:
COD_USUARIO (PK)
NOMBRE_USUARIO
PASSWORD_USUARIO
CODIGO_AREA (FK)

la teoria de lo ke kiero hacer es una especie de "Log In" osea... se selecciona el usuario de un combo box... y al lado se escribe la contraseña en un Edit... y si lo escrito es igual al valor almacenado en la tabla del campo PASSWORD_USUARIO... entonces.. ENTRA...
se entiende verdad.?

lo ke desencadena la accion es un boton...
------------
yo uso 4 controles para la conexion con la base de datos
3 provienen del conjunto de controles "Interbase"
ke son

* IBTable
* IBDatabase
* IBTransaction

y el ultimo objeto proviene del conjunto de controles "Data Access"

* DataSource

------------

bueno a continuacion... esta el codigo ke todavia no termine
proveniente del evento del boton...
logicamente... mi cerebro me dijo ke tengo ke usar una consulta SQL para obtener el valor de la contraseña correspondiente al codigo del usuario seleccionado en el combo box... y asi despues comparar los valores

use un control llamado "IBSQL" proveniente del conjunto de datos "Interbase" para generar la consulta...


NOTA:
DBLo_LOGIN--> es el comobo box
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
var
Form1: TForm1;
codactual : string;
passactual : string;

procedure TForm1.Button1Click(Sender: TObject);
begin
codactual := Vartostr(DBLo_LOGIN.KeyValue);
passactual := Ed_PASS.Text;
IBSQL1.SQL := 'select PASSWORD_USUARIO from USUARIOS where COD_USUARIO = '+ codactual;
IBSQL1.ExecQuery;

end;
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

al kerer compilar me da un error...
el problema es ke la variable "codactual" es un string...
y la consulta es una "Tstring"
entonces me dice tipos incompatibles...

me podrian ayudar..?? por favor..?
alguna especie de convercion de datos o algo asi...
o otro control... :-D


el codigo en visual basic seria algo asi...--->
pero no encontre los respectivos metodos y propiedades de los 4 controles ke empleo en delphi....
y necesito hacer esto en delphi...

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

VARIABLE_CODIGO=DataCombo.SelectedItem() //Devuelve el valor del código de usuario.

CONTROL_DATA..RECORDSOURCE="SELECT PASSWORD_USUARIO FROM TABLA_USUARIO WHERE CODIGO_USUARIO="+VARIABLE_CODIGO+";"

CONTROL_DATA.REFRESH()

VARIABLE2 = CONTROL_DATA.RECORDSET("PASSWORD_USUARIO")

IF VARIABLE2 = CONTROL_EDIT.TEXT THEN
USUARIO ENTRA porque ambas contraseñas son idénticas
ELSE
USUARIO NO ENTRA porque las contraseñas no son iguales.
END IF

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Muchisimas gracias.!!!

vtdeleon 19-01-2006 20:08:04

Saludos

No tiene caso repetir el hilo en varios foros, no se gana nada con esto! Tendrán las mismas repuestas.

CrystalBlood 19-01-2006 20:46:23

Cita:

Empezado por vtdeleon
Saludos

No tiene caso repetir el hilo en varios foros, no se gana nada con esto! Tendrán las mismas repuestas.

mis mas sinceras disculpas...
disculpen el inconveniente...
me podrian ayudar por favor.?

Alfredo 19-01-2006 20:55:08

Hola intenta cambiar esto:
Cita:

Empezado por CrystalBlood
IBSQL1.SQL := 'select PASSWORD_USUARIO from USUARIOS where COD_USUARIO = '+ codactual;
IBSQL1.ExecQuery;
.!!!

por esto:

Código Delphi [-]
IBSQL1.SQL.add( 'select PASSWORD_USUARIO from USUARIOS');
  IBSQL1.SQL.add('where COD_USUARIO = '+ codactual);
  IBSQL1.ExecQuery;

Espero que te sirva..

Alfredo 19-01-2006 20:59:03

uff, se me iva...

siempre hago una limpieza antes de mandar la sentencia, asi:

Código Delphi [-]
IBSQL1.SQL.clear;
  IBSQL1.SQL.add( 'select PASSWORD_USUARIO from USUARIOS');
  IBSQL1.SQL.add('where COD_USUARIO = '+ codactual);
  IBSQL1.ExecQuery;
;)

CrystalBlood 19-01-2006 21:59:37

thx...!
 
muchsisimas gracias..!
encerio si..!
desde hace un buen tiempo ke voy estudiando y no logre entender el comportamiento de estos controles...
estoy muy acostumbrado con el basic... y el delphi... cambia un poko :rolleyes:

pero aun asi... estoy en progreso :-D

una cuestion mas a tratar...
al ejecutarse esta linea... "IBSQL1.ExecQuery;"

keda almacenado el resultado de la consulta... verdad.?

lo ke me keda por hacer es esto--->
lo ke seria en basic

----------------------------
VARIABLE2 = CONTROL_DATA.RECORDSET("PASSWORD_USUARIO")

IF VARIABLE2 = CONTROL_EDIT.TEXT THEN
USUARIO ENTRA porque ambas contraseñas son idénticas
ELSE
USUARIO NO ENTRA porque las contraseñas no son iguales.
END IF

----------------------------

la pregunta es... como me refiero al valor devuelto al objeto "IBSQL1"??
muchisimas gracias desde ya..!
y disculpen la molestia :)

maeyanes 19-01-2006 22:06:06

En delphi se haría de la siguiente forma:

Código Delphi [-]
if IBSQL1.FieldByName('PASSWORD_USUARIO').AsString = Edit1.Text then
  // El usuario puede entrar
else
  // El usuario no puede entrar


Saludos...

CrystalBlood 20-01-2006 00:51:48

Muchisimas Gracias...!!! ENCERIO SI..!!!:D:D:D
no saben el peso ke me kitaron de encima..!!
yo solo tengo 16 años ^^ y ya tengo ke hacer un sistema de indole profesional... vamos a ver que sale... jejeje

una pregunta mas..! de donde puedo informarme?? osea una especie de manual/tutorial... o algo asi... por que en verdad necesito:p

osea... para simplificar.. especificamente donde aprendieron... los metodos de esos objetos... de manejo de base de datos.. .como es el "IBSQL" y todo eso...

desde ya muchisimas gracias de nuevo.!!
les actualizo de cualkier otro problemita :)

Alfredo 20-01-2006 15:29:34

Inscribete en este site, tienes varios tutoriales muy buenos y enlaces a otras pag. tanto en español como en ingles..

http://www.firebird.com.mx

te felicito porque realmente los "chamos" (llamese generacion de relevo) estan es pensando en bobadas y muy pocos son los que toman seriedad de las cosas, estoy seguro que estas bien encaminado..;)

ContraVeneno 20-01-2006 16:46:44

Tambien lee este hilo, y este otro...
Un saludo y bienvenido a los foros. :D

CrystalBlood 21-01-2006 01:44:28

Gracias.!! muy amable de sus partes. !!
y gracias por los 3 links :D

realmente... ahora yo estaba de pasantia... y me kede para realizar un sistema...

y jamas en la vida habia antes usado delphi ^^ ni mucho menos interbase :cool:
ahora como macho estoy aprendiendo... jajaja forsado...

en un futuro no muy lejano le voy a meter duro con el estudio de rendering :)
pero sin directX ni Opengl... xD

cualkier duda... referente al sistema ke estoy haciendo... voy a postear por aka... ^^

saludos.. y gracias de nuevo...:D


La franja horaria es GMT +2. Ahora son las 08:37:05.

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