PDA

Ver la Versión Completa : Parametros en mysql aplicación cliente servidor


pablocarlos
06-02-2021, 23:56:30
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
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:
Usuario from persona where Usuario = :Usuario (obvio dos parametros hasta y desde)y en beforeopen del query escribia:
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 Notevi
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
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 Notevi
07-02-2021, 20:00:21
Sigo sin entenderlo :confused:

pablocarlos
07-02-2021, 20:06:33
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 Notevi
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
¿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 Notevi
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 Notevi
08-02-2021, 16:22:50
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)
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...
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 Notevi
08-02-2021, 17:36:50
^\||/^\||/^\||/