Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Pues no se puede.
Y es precisamente para evitarse esos dolores de cabeza que empleamos los métodos.
TDataSet nos oculta ese tedioso manejo del buffer y nos hace el trabajo de forma transparente. No vemos ese Buffer porque simplemente el componente, y toda su jerarquía de clases está tan bien diseñada para ocultar los detalles técnicos que son "irrelevantes" al programador final.

¡Vamos que lo buscas hacer es ir a lo primitivo; rompe con el esquema y las bondades de OO: encapsulamiento de información y falicidad de programación!

Por cierto, el método Insert (el cual pertenece a TDataSet) no inserta. Simplemente pone al objeto en estado de insrción (dsInsert).
La inserción no se produce sino es hasta que se confirma con Post.

Puedes ver el bello código del DatSet, y/o de cualquier parte de la VCL tan sólo presionando Ctrl y dando clic en el método, propiedad del objeto.

Fíjate y observarás como internamente se opera con el Buffer y luego se delega la tarea al proveedor, o al motor quien es de última quien hace el trabajo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 29-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Cita:
Pues no se puede.
Y es precisamente para evitarse esos dolores de cabeza que empleamos los métodos.
TDataSet nos oculta ese tedioso manejo del buffer y nos hace el trabajo de forma transparente. No vemos ese Buffer porque simplemente el componente, y toda su jerarquía de clases está tan bien diseñada para ocultar los detalles técnicos que son "irrelevantes" al programador final.
Osea que cada registro que maneja el DataSet no es transparente?
Pues pense que se podia por me dije asi mismo "Por que no aprovechar lo que ya esta hecho y poder utilizarlo"
Incluso vi el metodo Prepare que al parecer prepara que todo este listo.
Tambien vi que se podia hacer esto:
Código Delphi [-]
ZQuery1.Fields.Add(algo);
Parece ser que Adiciona un nuevo Registro(Field)
Entonces para que esto?
¿Que alguien me explique por favor necesito entenderlo?
Cita:
Por cierto, el método Insert (el cual pertenece a TDataSet) no inserta. Simplemente pone al objeto en estado de insrción (dsInsert).
La inserción no se produce sino es hasta que se confirma con Post.
Tienes razon, entonces se podria hacer que primero haga un Insert y Luego un Post y quedaria solucionado en tal caso si se pudiera.
La verdad si alguien puede complementar le estaria muy agradecido.
Gracias amigo Delphius ...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 29-12-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Empezado por rgstuamigo Ver Mensaje
Osea que cada registro que maneja el DataSet no es transparente?
Pues pense que se podia por me dije asi mismo "Por que no aprovechar lo que ya esta hecho y poder utilizarlo"
Incluso vi el metodo Prepare que al parecer prepara que todo este listo.
Tambien vi que se podia hacer esto:
Código Delphi [-]ZQuery1.Fields.Add(algo);

Parece ser que Adiciona un nuevo Registro(Field)
Entonces para que esto?
¿Que alguien me explique por favor necesito entenderlo?

Tienes razon, entonces se podria hacer que primero haga un Insert y Luego un Post y quedaria solucionado en tal caso si se pudiera.
La verdad si alguien puede complementar le estaria muy agradecido.
Gracias amigo Delphius ...
Saludos...
Disculpa pero en ningún momento he dicho de que no se pueda o no deba trabajar a nivel de registros. Sino que el TDataSet encapsula todo el manejo interno de los registros y sus datos en un Buffer.

El DataSet nos oculta el Buffer, y en vez de ello nos ofrece los métodos bases que luego serán usados y ampliados por las clases descendientes de éste.

Repito nuevamente: no podemos ver el Buffer, pero a cambio de ese buffer tenemos los métodos, propiedades, y clases necesarias para hacernos la tarea más fácil.

Que se pueda añadir un campo al array Fields no viene al caso, eso ya es otra cuestión. ¿Qué no era que estamos hablando de insertar registros y no campos?
Y por si fuera poco, No es un comportamiento normal el que describes, ya que el mismo DataSet se encarga de añadir los campos necesarios en su momento.

Se ofrece ese método puesto que puede ser de utilidad en ciertos casos, pero no son muy frecuentes. El TDataSet llama, internamente a Fields.Add cuando lo necesite. ¿Cuáles son esos casos? La respuesta no podemos generalizar; se necesita analizar caso a caso.

¿A que viene ese giro de tu duda?
Sigues hablando abstractamente, (de igual modo que lo hago yo). Bajemos a tierra mejor. Define una duda concreta y puntual.

¿Quieres una respuesta puntual de cuando se hace uso de Fields.Add?
Un ejemplo es cuando el dataset (un TTable por ejemplo) habre la tabla. Cuando abre la tabla, pide los campos al motor y por cada campo crea un nuevo TField y lo asocia a la lista TFields.
Ahora mismo me imagino un caso, único y raro, en donde se podría necesitar llamar a Fields.Add: crear una tabla en memoria.

Quiero hacerte notar, que lo que estás preguntando son cosas un tanto rebuscadas, y abstractas. Vuelvo a reafirmar mi duda inicial ¿A que viene todo esto?

No se... a lo mejor yo soy el que no comprende el tema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 29-12-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Talking Solucionado la duda

Cita:
Pues no se puede.
Y es precisamente para evitarse esos dolores de cabeza que empleamos los métodos.
TDataSet nos oculta ese tedioso manejo del buffer y nos hace el trabajo de forma transparente. No vemos ese Buffer porque simplemente el componente, y toda su jerarquía de clases está tan bien diseñada para ocultar los detalles técnicos que son "irrelevantes" al programador final.
Bueno querido Amigo Delphius logre poder hacerlo de manera que queria Aqui esta el codigo por si a alguien le sirve trabajar de esta forma:
Código Delphi [-]
procedure TForm1.robertito1Click(Sender: TObject);
Var q:TZQuery;
begin
  q:=TZQuery.Create(self);
  try
    q.Connection:=ZConnection1;
    q.SQL.Text:='select * from U_Medida Limit 0;';//La tabla a la que voy a insertar
    q.Open;                               //tiene solo dos campos
    q.Insert;
    q.Fields[0].AsInteger:=StrToInt(Edit1.Text);
    q.Fields[1].AsString:=Edit2.Text;
    q.Post;
  finally
   q.Free;
end;

Es exactamente lo que estaba buscando.....me imagino que esta es otra forma de insertar se puede seguir la misma idea para editar, eliminar.
Saludos.....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 10-02-2010 a las 15:43:43.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 88 22-11-2025 22:17:42
¿Trabajar con ClientDataSet sin DataSet asociado? Bauhaus1975 Varios 0 14-11-2008 12:54:22
Copnfigurar ip manualmente soler Varios 25 11-03-2008 21:29:43
error configurando manualmente ADO.net camomilass Conexión con bases de datos 1 10-01-2007 20:10:44
Bloqueo de registros manualmente Will Firebird e Interbase 6 17-06-2005 17:38:38


La franja horaria es GMT +2. Ahora son las 10:23:56.


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