Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas al generar una clave unica (https://www.clubdelphi.com/foros/showthread.php?t=11218)

Huer 08-06-2004 21:56:09

Problemas al generar una clave unica
 
Hola Amigos delphianos.

He avanzado ya bastante gracias a esta ayuda.
mi consulta es la siguiente

tengo una tabla en SQL 2000, en un servidor y la conexión la realizo a través de Ado todo hasta aqui todo bien.

pero quiero generar una clave unica con los valores de dos campos, ambos numeric 13.

pero el problema esta cuando los grabos lo hace con un valor totalmente diferente al real, el codigo que ejecuto es el siguiente:


procedure TFoInscrip.CEditCuentaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If Key = Vk_return then
begin
if dmm.ADOTOrdenPago.Locate('cuentaordenpago',CeditCuenta.Text, []) then
begin
Bplanillaexiste := True;
CeditOrden.Text := dmm.ADOTOrdenPago.fieldBYname ('ORDENPAGO').AsString;
DeditIngreso.Text:= dmm.ADOTOrdenPago.fieldBYname('FECHAORDEN').AsString;
MkRut.Text := dmm.ADOTOrdenPago.fielDByname('RutProveedores').AsString;
if dmm.ADOTProveedores.Locate('rutproveedores',MkRut.Text,[]) then
begin
MkRut.Text := dmm.ADOTProveedores.fieldbyName('RutProveedores').AsString;
EditNombreProv.Text:= dmm.ADOTProveedores.fieldbyName('empresa').AsString;
end;
end;
ShowMessage('No existe cuenta');
CEditOrden.SetFocus;
end;

end;

Gracias por leer y ayuda en ejecucion de este proyecto...
salu2

delphi.com.ar 08-06-2004 22:10:09

Cita:

Empezado por Huer
pero el problema esta cuando los grabos lo hace con un valor totalmente diferente al real

¿Qué quieres decir con esto? ¿No guarda los valores que tu le pasas?
Por otro lado, el código que nos muestra parece parte del proceso de búsqueda...
Como extra, utilizar las etiquetas [delphi] para mostrar el código de una forma mas amena.

Saludos!

Huer 08-06-2004 22:42:13

Lo que quiero decir es lo siguiente:

existen dos campos edit1 lo que ingreso es : 13300012998 en el segundo edit2 ingreso ambos por teclado : 1523 y la clave que tiene que generarse es la 133000129981523, mientras que los ultimos numeros se agregen al numero anterior y esto lo trato de realizar tomando el edit1 lo multiplico por 10000 y luego le sumo el edit2. pero me graba y todo pero el mumero no es el correcto por ejemplo -1485935123 o 18458210322 nada que ver con el valor correcto. y el codigo que ingreso esta más arriba.
gracias por responder

delphi.com.ar 08-06-2004 22:47:26

Sigo sin entender cual es al relación con el código anterior. ¿Cuál es el tipo de dato del campo dónde deseas guardar esta clave?

Huer 08-06-2004 23:03:58

var clavet : integer;
begin
clavet := 10000;

CEditpaso.Value := (Clavet+CEditCuenta.Value); dmm.ADOTOrdenPago.Append;
dmm.ADOTOrdenPago.FieldByName('CUENTAOR').Value := CEditpaso.Value;
dmm.ADOTOrdenPago.FieldByName('CUENTA').Value:= CEditCuenta.Text;
dmm.ADOTOrdenPago.FieldByName('ORDENP').AsInteger:= n.AsInteger;
dmm.ADOTOrdenPago.FieldByName('FECHA').AsString:=DEditIngreso.Text;
dmm.ADOTOrdenPago.FieldByName('rutproveedores').Value := MkRut.Text;
dmm.ADOTOrdenPago.Post;



Lo siento este era el codigo correcto

en donde dice cuantaor debo grabar el numero 133000129981523
y en cuenta el valor de 1523
y los otros no tengo problemas
pero en el cuentaor me graba cualquier cosa memos el numero

Mick 09-06-2004 02:04:45

Lo siento pero casi no se entiende lo que quieres decir,
por el tipo de problema parece que estas trabajando con numeros demasiado
grandes.
Un integer es de 32 bits, de modo que 2 elevado 32 da: 4294967296 valores diferentes. Como los enteros son con signo, se puede guardar un valor entre -2 mil millones y +2 mil millones mas o menos.
El numero que estás manipulando se pasa de esos valores.

Saludos
Miguel

delphi.com.ar 09-06-2004 02:58:57

Insisto en que no se te entiende, con respecto a lo que dice Mick, hay tipos numéricos desde Delphi el Int64, que soportan sin problemas los números que intentas usar, pero viendo que no necesitas verdaderamente hacer ninguna operación aritmética, yo te recomendaría manejarlos como string.

Saludos!


La franja horaria es GMT +2. Ahora son las 16:01:42.

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