La respuesta, mi amigo, se va a ir con el parámetro


El Perpetuo Novato Entrada de Diario #2.1
Este artículo apareció por primera vez en http://www.undu.com
Cada uno de nosotros ha oído hablar de la reutilización de código mantra. Algunos de nosotros son un poco más lentos para adoptar nuevas prácticas cuando las viejas prácticas son tan cómodos como una vieja melodía. Pero los tiempos están cambiado y es hora de meter un dedo en la reutilización, incluso si es sólo para la reutilización de un formulario.
recientemente he tenido la causa para crear un formulario modal para hacer algo de edición de un registro a partir de una cuadrícula. Tiene sentido hacer un formulario modal, de modo que el usuario pueda ver la totalidad de la información a la vez. No hay problema. Yo hice referencia a la MainForm del origen de datos.Autoedit := false y todo funcionó a la hunky-dory. El formulario modal consistía en unos campos de edición, post botón, un botón de cancelar y tres controladores de eventos. Además de los post y cancelar los controladores, hubo un controlador de pulsación de teclas que se convirtió entra en las pestañas. También he desactivado el título-de la barra de botón de salida. La edición fue iniciado por un botón en el bar el mirador en el formulario principal. El concepto trabajado muy bien en la auditoría de los cambios realizados durante la sesión de edición en un campo de la historia.
por Lo que bien hizo el formulario modal de trabajo que me decidí a subir hasta el doble uso de la forma mediante el uso de ella para Agregar un nuevo registro en la base de datos. Todo lo que tenía que hacer era para el ejercicio de algún tiempo de ejecución de las modificaciones, cambiando el título y el ajuste de algunos otros ajustes antes de abrirlo como un formulario modal. Mientras que el campo ID de Cliente fue de sólo lectura en el formulario modal, fue desactivado en el Agregar formulario. Por lo menos yo PENSABA que era todo allí era demasiado.
me encontré con un problema debido a que la base de datos en cuestión era un detalle de la base de datos, conectados a un maestro. No hay problema. Yo simplemente copia el origen de datos y la tabla a otro nombre (es decir, de los Clientes a CustEdit). Entonces yo podría restablecer los punteros a la copia del origen de datos. El procedimiento que se acaba de editar tenía que incluir una gotoCurrent función de armonizar las dos copias y terminar con una actualización en el original para asegurarse de que todos los cambios se notaron.
La función de Edición fue fácil modificar:
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FrmCustomer := TFrmCustomer.Create(nil)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con FrmCustomer empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fldCustNum.readonly := true // NUEVA Asegurarse de que usted no puede cambiar la clave de campo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caption := 'Editar' Cliente // NUEVO Hacer que el título indique la función
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustEd.gotoCurrent(FrmMain.TblCustomer) // NUEVO armonizar la sombra de la tabla con el maestro
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no (sourceCustEd.estado en dsEditModes)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp luego TblCustEd.edit // Asegúrese de introducir el modo de edición
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar ShowModal // abrir el formulario, utilizar y, a continuación, la perderá
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.actualizar // NUEVA Actualización de la visualización de los datos con el detrás de escenas de los cambios
& nbsp & nbsp & nbsp & nbsp & nbsp final
las Cosas con el Complemento no trabajar tan pronto como he pulsado el botón durante la ejecución. Se produjo una queja de que el conjunto de datos NO en el modo de edición. Me puse en los puntos de interrupción. Me cambié de uso agregar para Insertar y la espalda de nuevo. El programa rompían en TblCustEdit.anexar, incluso cuando les dije inmediatamente antes de la mano que la fuente estaba en el modo de edición inmediatamente anterior. es decir,
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FrmCustomer := TFrmCustomer.Create(nil)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con FrmCustomer empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fldCustNum.readonly := false
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caption := 'Añadir Un Cliente'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar TblCustEd.Anexar // BOMBA!!!!!!!!!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto showmessage('Edición problemático')
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar ShowModal
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.actualización
& nbsp & nbsp & nbsp & nbsp & nbsp final
Si la puse y me registré para dsEditModes por encima de la de anexar declaración y, a continuación, marcada con un punto de ruptura, el depurador NO se ejecute, siendo optimizado o cambiado de ubicación por el compilador. Y, el código estaba apuntando hacia el evento buttonclick del botón cuando se tiene terminado de responder a los cuadros de diálogo. Yo era uno confundido cachorro.

me dirigía a la Internet cuando por fin vi lo que era el problema. El newrecord método para TblCustomer incluye cuatro predeterminada configuración de campo. Fue formulada en el procedimiento, por ejemplo, como:
& nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.fieldByName, ('Portador').asString := 'FEDEX'
ESTE FUE COPIADO a la newRecord campo de la copia de origen de datos. Yo veía esto horas antes de darse cuenta de que TblCustomer Y TblCustEdit no eran uno y el mismo [oveja con cara de mueca]! El problema se resolvió inicialmente por simplemente corregir el nombre de la discrepancia. Sin embargo, he llegado a la conclusión de que soy demasiado propenso a cometer ese error de nuevo. Sooooooooo....
El nuevo enfoque es utilizar el parámetro de la llamada en el 'con' de estilo. I. e.
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con el conjunto de datos empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName ('Portador').asString := 'FEDEX'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('GST').asBoolean := true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('PST').asBoolean := true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('Aprobado').asBoolean := False
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
he decidido que voy a usar ese parámetro de la llamada más a menudo. Es posible que requiera un comentario o dos para ser totalmente claro, en una lectura rápida, pero me comprometo a utilizar para Cubrir Mi Trasero contra la estupidez, como he perpetrado en contra de mi fecha límite hoy aquí.
Espero que esto ayuda a evitar que un ceño fruncido o dos en el futuro.
Más sobre la seguridad de la Codificación de Ideas
por Gary Mugford - [email protected]
El artículo anterior generó respuestas de Ramón Pinchazo y Andy Robinson. Aquí está mi seguimiento:
Gracias a Ramón Pinchazo de los países Bajos) para amplificar el concepto detrás de mi artículo. Es el tipo de diálogo que a menudo puede ser esclarecedor y útil para los programadores, pero el nivel de experto. Es cierto que la idea detrás de seguros de codificación es eliminar los errores de omisión tanto como sea posible. Nombre de campo-cambio de no ir más a menudo de lo que me gustaría. Ramón sugirió ir a una cierta longitud para evitar la mención de los nombres de campo por nombres rígida, prefiriendo constantes o a nivel de campo definiciones en los módulos de datos.
sin Embargo, he encontrado la FBN referencias fáciles de localizar y cambiar con cualquier estándar de utilidad grep. Que las constantes de la sugerencia que hace la facilidad de sustitución de un complemento, es evidente. Pero que facilidad tienen un precio, el espacio de almacenamiento. En una aplicación decente, la complejidad, el número de nombres de campo podría ser considerable. Y estas tienen que ser a nivel de unidad global constantes tener cualquier valor y deben ser de nivel de aplicación global constantes ser tanto valor como usted desea. Los módulos de datos tiene la utilización que usted sugiere, sino que añade otra capa para el código del programa. No están todas las que son necesarias en una gestionan adecuadamente SDI interfaz donde el niño formas de utilizar el formulario de llamada de conjuntos de datos cuando sea apropiado.
con Todo, me parece que la incidencia de cambiar los nombres de campo (como negativas agregado nombres) se produce con tan poca frecuencia, que puedo decidir no pagar la sobrecarga. En el grupo de los esfuerzos de programación o en aplicaciones MDI, fácilmente puedo ver el valor en su primera sugerencia y recomiende su aprobación.
En otro correo electrónico, Andy Robinson, de sudáfrica indicó que él había tenido problemas en el pasado con anidada uso de parámetros del conjunto de datos. Su problema era con bucles interminables: '...en este tipo de estructura parecería que no se puede confiar en ciertas declaraciones. por ejemplo. Yo ya no intento esto...
& nbsp & nbsp & nbsp & nbsp & nbsp con dataset1 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con dataset2 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp .....
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp siguiente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
Esta es una situación diferente de la que estaba seguro que había un único conjunto de datos de parámetro que se pasa a través de un método automático como AfterInsert. Mientras que él no ha tenido el tiempo para investigar el problema y precisar, este tipo de heads-up, ahora me tiene un aspecto muy cuidado en todos anida con las declaraciones.
Por cierto, el código de uso de la plantilla permite que la mayoría de los habituales de solución de problemas para el bucle problema observado por Andy. Tengo un WithEOF plantilla que los tipos:
& nbsp & nbsp con el | do begin
& nbsp & nbsp & nbsp & nbsp & nbsp primera
& nbsp & nbsp & nbsp & nbsp & nbsp mientras no eof do begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp siguiente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
También, FBNS para ampliar a fieldbyName('|').asString y FBNI para ampliar a fieldByName('|').asInteger realmente hacer maravillas en términos de precisión y la velocidad de entrada de código. En última instancia, como un solo hombre, tienda de estas de la velocidad de las ganancias de mérito de la continuación del uso de la codificación de la práctica que no funcionan tan bien en su organización.
& nbsp & nbsp & nbsp & nbsp Gary Mugford
& nbsp & nbsp & nbsp & nbsp Idea Mecánico Inc
& nbsp & nbsp & nbsp & nbsp Bramalea EN Canadá









La respuesta, mi amigo, se va a ir con el parametro


La respuesta, mi amigo, se va a ir con el parametro : Multi-millones de consejos para hacer su vida mas facil.


El Perpetuo Novato Entrada de Diario #2.1
Este articulo aparecio por primera vez en http://www.undu.com
Cada uno de nosotros ha oido hablar de la reutilizacion de codigo mantra. Algunos de nosotros son un poco mas lentos para adoptar nuevas practicas cuando las viejas practicas son tan comodos como una vieja melodia. Pero los tiempos estan cambiado y es hora de meter un dedo en la reutilizacion, incluso si es solo para la reutilizacion de un formulario.
recientemente he tenido la causa para crear un formulario modal para hacer algo de edicion de un registro a partir de una cuadricula. Tiene sentido hacer un formulario modal, de modo que el usuario pueda ver la totalidad de la informacion a la vez. No hay problema. Yo hice referencia a la MainForm del origen de datos.Autoedit := false y todo funciono a la hunky-dory. El formulario modal consistia en unos campos de edicion, post boton, un boton de cancelar y tres controladores de eventos. Ademas de los post y cancelar los controladores, hubo un controlador de pulsacion de teclas que se convirtio entra en las pestañas. Tambien he desactivado el titulo-de la barra de boton de salida. La edicion fue iniciado por un boton en el bar el mirador en el formulario principal. El concepto trabajado muy bien en la auditoria de los cambios realizados durante la sesion de edicion en un campo de la historia.
por Lo que bien hizo el formulario modal de trabajo que me decidi a subir hasta el doble uso de la forma mediante el uso de ella para Agregar un nuevo registro en la base de datos. Todo lo que tenia que hacer era para el ejercicio de algun tiempo de ejecucion de las modificaciones, cambiando el titulo y el ajuste de algunos otros ajustes antes de abrirlo como un formulario modal. Mientras que el campo ID de Cliente fue de solo lectura en el formulario modal, fue desactivado en el Agregar formulario. Por lo menos yo PENSABA que era todo alli era demasiado.
me encontre con un problema debido a que la base de datos en cuestion era un detalle de la base de datos, conectados a un maestro. No hay problema. Yo simplemente copia el origen de datos y la tabla a otro nombre (es decir, de los Clientes a CustEdit). Entonces yo podria restablecer los punteros a la copia del origen de datos. El procedimiento que se acaba de editar tenia que incluir una gotoCurrent funcion de armonizar las dos copias y terminar con una actualizacion en el original para asegurarse de que todos los cambios se notaron.
La funcion de Edicion fue facil modificar:
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FrmCustomer := TFrmCustomer.Create(nil)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con FrmCustomer empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fldCustNum.readonly := true // NUEVA Asegurarse de que usted no puede cambiar la clave de campo
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caption := 'Editar' Cliente // NUEVO Hacer que el titulo indique la funcion
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustEd.gotoCurrent(FrmMain.TblCustomer) // NUEVO armonizar la sombra de la tabla con el maestro
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si no (sourceCustEd.estado en dsEditModes)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp luego TblCustEd.edit // Asegurese de introducir el modo de edicion
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar ShowModal // abrir el formulario, utilizar y, a continuacion, la perdera
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.actualizar // NUEVA Actualizacion de la visualizacion de los datos con el detras de escenas de los cambios
& nbsp & nbsp & nbsp & nbsp & nbsp final
las Cosas con el Complemento no trabajar tan pronto como he pulsado el boton durante la ejecucion. Se produjo una queja de que el conjunto de datos NO en el modo de edicion. Me puse en los puntos de interrupcion. Me cambie de uso agregar para Insertar y la espalda de nuevo. El programa rompian en TblCustEdit.anexar, incluso cuando les dije inmediatamente antes de la mano que la fuente estaba en el modo de edicion inmediatamente anterior. es decir,
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FrmCustomer := TFrmCustomer.Create(nil)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con FrmCustomer empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fldCustNum.readonly := false
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp caption := 'Añadir Un Cliente'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar TblCustEd.Anexar // BOMBA!!!!!!!!!!
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp excepto showmessage('Edicion problematico')
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp intentar ShowModal
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp finalmente Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.actualizacion
& nbsp & nbsp & nbsp & nbsp & nbsp final
Si la puse y me registre para dsEditModes por encima de la de anexar declaracion y, a continuacion, marcada con un punto de ruptura, el depurador NO se ejecute, siendo optimizado o cambiado de ubicacion por el compilador. Y, el codigo estaba apuntando hacia el evento buttonclick del boton cuando se tiene terminado de responder a los cuadros de dialogo. Yo era uno confundido cachorro.

me dirigia a la Internet cuando por fin vi lo que era el problema. El newrecord metodo para TblCustomer incluye cuatro predeterminada configuracion de campo. Fue formulada en el procedimiento, por ejemplo, como:
& nbsp & nbsp & nbsp & nbsp & nbsp TblCustomer.fieldByName, ('Portador').asString := 'FEDEX'
ESTE FUE COPIADO a la newRecord campo de la copia de origen de datos. Yo veia esto horas antes de darse cuenta de que TblCustomer Y TblCustEdit no eran uno y el mismo [oveja con cara de mueca]! El problema se resolvio inicialmente por simplemente corregir el nombre de la discrepancia. Sin embargo, he llegado a la conclusion de que soy demasiado propenso a cometer ese error de nuevo. Sooooooooo....
El nuevo enfoque es utilizar el parametro de la llamada en el 'con' de estilo. I. e.
& nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con el conjunto de datos empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName ('Portador').asString := 'FEDEX'
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('GST').asBoolean := true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('PST').asBoolean := true
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fieldByName('Aprobado').asBoolean := False
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
he decidido que voy a usar ese parametro de la llamada mas a menudo. Es posible que requiera un comentario o dos para ser totalmente claro, en una lectura rapida, pero me comprometo a utilizar para Cubrir Mi Trasero contra la estupidez, como he perpetrado en contra de mi fecha limite hoy aqui.
Espero que esto ayuda a evitar que un ceño fruncido o dos en el futuro.
Mas sobre la seguridad de la Codificacion de Ideas
por Gary Mugford - [email protected]
El articulo anterior genero respuestas de Ramon Pinchazo y Andy Robinson. Aqui esta mi seguimiento:
Gracias a Ramon Pinchazo de los paises Bajos) para amplificar el concepto detras de mi articulo. Es el tipo de dialogo que a menudo puede ser esclarecedor y util para los programadores, pero el nivel de experto. Es cierto que la idea detras de seguros de codificacion es eliminar los errores de omision tanto como sea posible. Nombre de campo-cambio de no ir mas a menudo de lo que me gustaria. Ramon sugirio ir a una cierta longitud para evitar la mencion de los nombres de campo por nombres rigida, prefiriendo constantes o a nivel de campo definiciones en los modulos de datos.
sin Embargo, he encontrado la FBN referencias faciles de localizar y cambiar con cualquier estandar de utilidad grep. Que las constantes de la sugerencia que hace la facilidad de sustitucion de un complemento, es evidente. Pero que facilidad tienen un precio, el espacio de almacenamiento. En una aplicacion decente, la complejidad, el numero de nombres de campo podria ser considerable. Y estas tienen que ser a nivel de unidad global constantes tener cualquier valor y deben ser de nivel de aplicacion global constantes ser tanto valor como usted desea. Los modulos de datos tiene la utilizacion que usted sugiere, sino que añade otra capa para el codigo del programa. No estan todas las que son necesarias en una gestionan adecuadamente SDI interfaz donde el niño formas de utilizar el formulario de llamada de conjuntos de datos cuando sea apropiado.
con Todo, me parece que la incidencia de cambiar los nombres de campo (como negativas agregado nombres) se produce con tan poca frecuencia, que puedo decidir no pagar la sobrecarga. En el grupo de los esfuerzos de programacion o en aplicaciones MDI, facilmente puedo ver el valor en su primera sugerencia y recomiende su aprobacion.
En otro correo electronico, Andy Robinson, de sudafrica indico que el habia tenido problemas en el pasado con anidada uso de parametros del conjunto de datos. Su problema era con bucles interminables: '...en este tipo de estructura pareceria que no se puede confiar en ciertas declaraciones. por ejemplo. Yo ya no intento esto...
& nbsp & nbsp & nbsp & nbsp & nbsp con dataset1 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp con dataset2 empiezan
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp .....
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp siguiente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp final
Esta es una situacion diferente de la que estaba seguro que habia un unico conjunto de datos de parametro que se pasa a traves de un metodo automatico como AfterInsert. Mientras que el no ha tenido el tiempo para investigar el problema y precisar, este tipo de heads-up, ahora me tiene un aspecto muy cuidado en todos anida con las declaraciones.
Por cierto, el codigo de uso de la plantilla permite que la mayoria de los habituales de solucion de problemas para el bucle problema observado por Andy. Tengo un WithEOF plantilla que los tipos:
& nbsp & nbsp con el | do begin
& nbsp & nbsp & nbsp & nbsp & nbsp primera
& nbsp & nbsp & nbsp & nbsp & nbsp mientras no eof do begin
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ...
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp siguiente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp final
Tambien, FBNS para ampliar a fieldbyName('|').asString y FBNI para ampliar a fieldByName('|').asInteger realmente hacer maravillas en terminos de precision y la velocidad de entrada de codigo. En ultima instancia, como un solo hombre, tienda de estas de la velocidad de las ganancias de merito de la continuacion del uso de la codificacion de la practica que no funcionan tan bien en su organizacion.
& nbsp & nbsp & nbsp & nbsp Gary Mugford
& nbsp & nbsp & nbsp & nbsp Idea Mecanico Inc
& nbsp & nbsp & nbsp & nbsp Bramalea EN Canada


La respuesta, mi amigo, se va a ir con el parámetro

La respuesta, mi amigo, se va a ir con el parámetro : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación