![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Muy complicado de hacer; las diferentes implementaciones estan en distintos arboles de herencia.
Por ejemplo en DB.pas se define el tipo TParam para operar con los parametros de los TQuery Pero en ADODB.pas se define otro tipo TParameter que no tiene nada que ver con TParam Tampco hay un ancestro comun para los TQuery. ADOQuery hereda de TCustomAdoDataSet quien hereda de TDataSet; y es en TCustomAdoDataSet donde se agrega la funcionalidad para los TParameter Lo mas cercano que podes hacer es declarar una interface y luego crear clases wrapper, asi:
Wrapper ADO:
Ejemplo de uso:
|
|
#2
|
||||
|
||||
|
Es cierto lo que comentan, dependiendo del dataset, hay diferentes formas de definir los parámetros de un dataset.
Dataset.ParamByName() .. ó DataSet.Parameters.ParamByName()... Tendrás que hacer unas pruebas, y ver si utilizas una forma u otra teniendo en cuenta qué objetos utilizas. Si utilizas diferentes objetos, tendrás que hacer un cast. Espero haberte dado alguna idea. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#3
|
||||
|
||||
|
No es buena idea, ya que si cambias la clase del dataset, te tenes que acordar de agregar el cast a esa clase; es agregar un if
Ademas, si se manda por parametro un TDataSet, eso quiere decir que puedo mandar sin problemas un TTable, un TClientDataSet; y evidentemente eso no es lo que espera el procedimiento Tambien implica agregar en la clausula uses las distintas bibliotecas: ADODB para TADOxx, DB para TDataSet, DBClient para TClientDataSet; esto es malo porque es acoplamiento (se depende de otra unidad para poder compilar la nuestra). El codigo acoplado es mas dificil de mantener, mas dificil de testear, mas dificil de aislar. Yo siempre estoy luchando con sacar todo lo que sobra en los uses, y si puedo poner todo en la seccion de implementation, mejor aun Delphi por suerte soporta OOP e interfaces, no volvamos a la programacion estructurada Lo mas sano es declarar una interface y enviarla como parametro; si mas adelante cambio de TADOQuery a TQuery, al enviarlo por parametro el compilador me va a recordar amablemente que la clase TQuery no implementa dicha interface Hay que aprender a escribir codigo que arroje los errores en tiempo de compilacion, no en ejecucion Última edición por AgustinOrtu fecha: 01-02-2016 a las 14:30:10. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Copiar informacion de un Tdataset a otro Tdataset | joelphi | Varios | 10 | 19-02-2009 22:27:44 |
| Paso de parámetros a TDataset | arturom | Firebird e Interbase | 9 | 04-04-2008 18:04:03 |
| Paso de parametros | senpiterno | Varios | 1 | 11-04-2004 03:44:17 |
| paso de parametros | gustavo2 | SQL | 7 | 16-01-2004 15:46:23 |
| Paso de parametros | __cadetill | PHP | 2 | 12-08-2003 10:15:09 |
|