Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2007
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Poder: 18
Tauro78 Va por buen camino
Como obtener el numero generado en un MDODataSet ?

Como obtener el numero generado en un MDODataSet ?
hola quisiera saber lo siguiente:
Estoy usando MDO y FB2; como puedo hacer para obtener el nro_cliente que
es generado por un generador luego de hacer el Commit ?
Supongo que necesitaria leer el valor en algun parametro de salida de QInsert
pero no encuentro la forma.
He probado con dmTablas.DSetClientesNRO_CLIENTE.Value pero no funciona.
Quiero obtener el nuevo valor para mostrarselo al usuario por medio de un
mensaje luego de haber realizado un alta de cliente.

Código Delphi [-]
 
try
dmTablas.TDSetClientes.StartTransaction;
dmTablas.DSetClientes.QInsert.Close;
dmTablas.DSetClientes.QInsert.ParamByName('NRO_CLIENTE').AsInt64 := dmTablas.DSetClientes.GeneratorLink.GetGenValue;
dmTablas.DSetClientes.QInsert.ParamByName('NOMBRE').AsString := UpperCase(Edit6.Text);
dmTablas.DSetClientes.QInsert.ParamByName('DIRECCION').AsString := Edit7.Text;
dmTablas.DSetClientes.QInsert.ParamByName('LOCALIDAD').AsString := Edit8.Text;
dmTablas.DSetClientes.QInsert.ParamByName('RUC').AsString := Edit9.Text;
dmTablas.DSetClientes.QInsert.Prepare;
dmTablas.DSetClientes.QInsert.ExecQuery;
dmTablas.TDSetClientes.Commit;
Mensaje := 'El Cliente se grabó con el número: ' + IntToStr(dmTablas.DSetClientesNRO_CLIENTE.Value);
            MessageDlg(Mensaje + #13#10, MtInformation, [MbOK], 0);
except
dmTablas.TDSetClientes.Rollback;
raise;
end;

Espero haber sido claro, gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 05-03-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Revisa la propiedad GeneratorField (o algo parecido) del MDODataset, ahí indicas qué campo usa el generador, el nombre del generador y cuando aumentar el generador (waNewRecord, waPost, waServer).

Otra opción es usar un Procedimiento almacenado que te devuelva el generador incrementado, justo antes de lanzar el sql de inserción, haces la llamada al SP para que devuelva el número.

Edito: Si el programa va en red, olvida el último consejo

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 05-03-2007 a las 11:21:24.
Responder Con Cita
  #3  
Antiguo 06-03-2007
Tauro78 Tauro78 is offline
Miembro
 
Registrado: sep 2006
Posts: 88
Poder: 18
Tauro78 Va por buen camino
gracias por tu respuesta, la verdad que son 4 pc en red, entonces la solucion 2 del SP no me convence, en cuanto a la propiedad GeneratorField no hay nada que me devuelva el numero recien insertado.
Lo que hice para solucionarlo que no me parece lo mejor pero no encontre otra forma es:

Código Delphi [-]
 nro_impuesto := dmTablas.DSetClientes.GeneratorLink.GetGenValue;

o sea creo una variable y a esa variable le paso el valor generado, luego

Código Delphi [-]
dmTablas.DSetClientes.QInsert.ParamByName('NRO_CLIENTE').AsInt64 := nro_impuesto;

y en el mensaje muestro el valor de la variable nro_impuesto.

Última edición por Tauro78 fecha: 06-03-2007 a las 17:40:35.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como puedo obtener el numero de meses entre 2 fechas en firebird ElGatitoTapatio Firebird e Interbase 15 22-01-2007 16:35:15
como obtener un numero entero a raiz de multiplicar dos campo string buzon MS SQL Server 5 10-12-2006 18:03:28
Como obtener el maximo numero generado en campo autonumerico makinita C++ Builder 4 11-09-2006 11:14:50
De un número, obtener el ASCII Alexander Varios 2 26-05-2005 17:21:32
como obtener el numero de archivos que contiene una carpeta Javi2 Varios 1 15-07-2004 12:03:21


La franja horaria es GMT +2. Ahora son las 06:01:15.


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
Copyright 1996-2007 Club Delphi