Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Parametros en mysql aplicación cliente servidor (https://www.clubdelphi.com/foros/showthread.php?t=95054)

pablocarlos 06-02-2021 23:56:30

Parametros en mysql aplicación cliente servidor
 
Saludos. Estoy trabajando en una app cliente servidor donde necesito que cuando se registre el cliente en la apps desde su celular, etc.. (en un edit como usuario) verifique en el servidor no esté en uso dicho usuario.
En servidor tengo los fdquerys con sus datasetprovider. En la apps están los clientdataset que se conectan al datasetprovider. en el query del servidor escribo
Código SQL [-]
SELECT Usuario from persona where Usuario = Usuario
donde selecciona el usuario de la persona... Aquí imagino debe ir el parametro para que una vez escrito el nombre de usuario verifique se encuentre disponible.
Años atras en delphi, bd local, definia los parametros en el query:
Código SQL [-]
Usuario from persona where Usuario = :Usuario
(obvio dos parametros hasta y desde)y en beforeopen del query escribia:
Código Delphi [-]
procedure TdmQuerys.qBuscarDatosBeforeOpen(DataSet: TDataSet);
begin
 qBuscarDatos.ParamByName('pUsuarioDesde').AsString :=
  frmBuscarDatos.eUsuario.Text + '';
 qBuscarDatos.ParamByName('pUsuarioHasta').AsString :=
  frmBuscarDatos.eUsuario.Text + 'Zz';
end;


Trabajo con Rad Studio...
Gracias por su tiempo y brindar sus conocimientos. Saludos!

Casimiro Noteví 07-02-2021 12:17:10

Hola, no he entendido realmente cuál es la duda que tienes.

pablocarlos 07-02-2021 15:34:53

Cita:

Empezado por Casimiro Notevi (Mensaje 539909)
Hola, no he entendido realmente cuál es la duda que tienes.

Cómo hacerlo en una aplicación cliente servidor donde los querys están en el servidor y los datos en el cliente. El código anterior no reconoce o no se hacerlo como corresponde.
Muchas gracias

Casimiro Noteví 07-02-2021 20:00:21

Sigo sin entenderlo :confused:

pablocarlos 07-02-2021 20:06:33

Cita:

Empezado por Casimiro Notevi (Mensaje 539914)
Sigo sin entenderlo :confused:

Disculpas...

Sería... desde la apps cuando complete el campo usuario verifique en el servidor, si no está en uso ese usuario...
Gracias por su tiempo.

Casimiro Noteví 07-02-2021 20:44:33

¿Poniendo un campo a true o false, o algo así?
"Si no está en uso", supongo que quiere decir que no está conectado.
En la tabla de usuarios puedes tener campos como:

id
usuario
password
conectado


Cuando se conecta pones "conectado" a 1, y cuando se desconecta lo pones a 0. Por ejemplo.
También debes tener en cuenta que puede desconectarse "accidentalmente" y se quede marcado como conectado, "1", por lo que sería conveniente tener algún control para detectar que realmente esté conectado y si no lo está, ponerlo a "0".

Creo que te refieres a eso, ¿no?

pablocarlos 07-02-2021 20:48:46

Cita:

Empezado por Casimiro Notevi (Mensaje 539916)
¿Poniendo un campo a true o false, o algo así?
"Si no está en uso", supongo que quiere decir que no está conectado.

Que no está el nombre elegido. Escribo mi usuario en la apps y verifico que ese nombre de usuario no existe en la bd.
Lo tipico cuando uno se registra en un correo y nos informa que ese usuario está, que debemos elegir otro.

Disculpas por no hacerme entender. Muchas gracias.

Casimiro Noteví 08-02-2021 12:12:59

Vale, pero no entiendo el problema cuál es: ¿saber si existe el nombre?, ¿crear el sql?, ¿pasar el parámetro?, ¿leer el valor devuelto?, ¿otra cosa?

pablocarlos 08-02-2021 14:38:18

Gracias Casimiro. Saber si existe el nombre.

Muchas Gracias

Casimiro Noteví 08-02-2021 16:22:50

Código SQL [-]
select usuario from tbUsuarios where usuario=?usuario

pablocarlos 08-02-2021 16:52:39

Casimiro... que me has hecho pensar!!!! Asi se puede...

Pasos: en fdquery declaro parametro select xxxxx from xxxx where xxxxx and xxxx = :xxxx hasta aquí en el servidor, el fdquery espera un parametro desde la apps donde en el TClientDataSet agrego un parametro en su evento BeforeOpen le digo cual es el valor del parametro, vamos al código por si alguien lo necesita (no es sobre la consulta de usuario pero válido también, ahora a trabajar con lo del usuario)
Código SQL [-]
Select Pais, Max(Numero) from xxx Where Numero <> 0  Pais = : pais (sin espacio entre los : y país)
order by id DESC LIMIT 1
Hasta aquí nada más en el servidor vamos al cliente (app)
en el Tclientdataset declaro un param y en su evento beforeopen...
Código Delphi [-]
 cdsUltimo_Numero.ParamByName('Pais').AsString :=
  ePaisT.Text;
con esto obtengo el número mayor de un determinado país (cada país tiene una numeración que ese número se puede repetir en otro país pero no en el mismo)
Espero haber sido claro. Lo importante es que está funcionando acorde a la necesidad. Escribo mi solución por que así como he sacado datos de aqui de otros integrantes, a otras personas le puede servir lo mio. Nuevamente Gracias Casimiro por tu tiempo

Casimiro Noteví 08-02-2021 17:36:50

^\||/^\||/^\||/


La franja horaria es GMT +2. Ahora son las 02:22:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi