Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
Cita:
Empezado por jachguate
Bueno... el cursor no se mueve de registro en el dataset, pero me parece (salvo que ADO trabaje sensiblemente diferente al BDE en esta parte) que el registro no estará "actualizado". Es decir, no mostrará el valor asignado al campo en la base de datos.
Por este preciso motivo decía que no sabía como ADO se comportaba con el refresco de los datos. Si te da el valor de forma inmediata, no hay problema, sino.... ya lo dejo en manos de gente que conozca bien este motor
Responder Con Cita
  #2  
Antiguo 19-05-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 23
jplj Va por buen camino
El código que he puesto es un ejemplo, sólo eso.

En cuanto a recuperar el valor del campo Tabla1-Id tras el Post, lo intenté en: la línea de código tras el post, en el evento afterpost de la tabla y en el evento SetText y Validate del campo con el mismo resultado 0.

Otra forma que se me ha ocurrido es utilizar una sentencia SQL, aunque no sé si es factible crear una sentencia que insert un registro y devuelva la fila insertada.

Si teneis cualquier sugerencia os la agradecería.

Saludos
Juan P.
Responder Con Cita
  #3  
Antiguo 19-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
A mi saber no es posible recuperar la fila seleccionada. Access no tiene algun mecanismo tipo generadores que te permita asignar el código desde el cliente??
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 19-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Vamos a ver, que no estoy entendiendo lo qe dice jachguate:

Si tengo una tabla en paradox con un campo autonumérico e inserto un registro, inmediatamente depués del post puedo obtener el valor que se asignó al campo.

Responder Con Cita
  #5  
Antiguo 19-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Bueno... ya sabes que Paradox es un caso especial del BDE, al igual que los DBF's, y no se si algun otro. Lo que yo digo es aplicable para bases de datos SQL (al menos desde el punto de vista del propio BDE, pues Access sigue cayendo en esta categoria, segun mi criterio).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 19-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues el problema es raro. Acabo de hacer la prueba con ADO con Access y es como suponía cadetill, el valor del autonumérico lo obtengo inmediatamente después del Post. De hecho esto lo había ya señalado sanxpue desde un principio, si bien él agrega el uso de Last.
Responder Con Cita
  #7  
Antiguo 20-05-2004
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 23
jplj Va por buen camino
Bien por lo que dice Roman algo debo estar haciendo mal.

Acabo de hacer nuevamente la prueba con el código siguiente:

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
var
   k: Real;
begin
   ADOTable1.Append;
   ADOTable1Numero.AsInteger:= 1000;
   ADOTable1Nombre.AsString:= 'Número : ' +IntToStr(1000);
   ADOTable1.Post;
   k:= ADOTable1Id.AsFloat;
   MessageDlg('Id registro insertado: ' + FloatToStr(k), mtInformation,  
                    mbOk], 0);
end;

Y el valor de de k es siempre cero.

La cadena de conexión es:

Código:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;
Data Source=E:\Documents and Settings\casa\Mis 
Documentos\Trabajo\Estudio_ADO\bd2.mdb;
Mode=Share Deny None;Extended Properties="";
Jet OLEDB:System database="";Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=4;
Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False
Utilizo Acces 97 y Delphi 7.

¿dónde está el error?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 09:07:46.


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