![]() |
![]() |
| 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
|
||||
|
||||
|
No estoy de acuerdo con todo lo que se dice por aquí y como esto es un foro, doy mi opinión.
La verdad es que todos llevan razón, incluso tu amigo que dijo que no usaras DBEdits, pero hay que explicar el por qué no usarlos y también cuando sí usarlos. Cita:
.Tienes varios métodos para acceder a los campos: 1- campos persistentes (doble clic al TTable y después en el Field editor boton derecho y Add All Fileds). Así accedes al campo: NombreTablaNombreCampo.AsXXX Ésta si cabe, es la forma más rápida y eficiente de acceder al campo. Fíjate que no hay un punto entre el nombre de la tabla y el nombre del campo, el nombre es todo uno (es la forma de delphi de nombrar los campos). 2- Por el índice de la lista de campos, es casi igual de rápido que el método anterior, solo ha de accederse a la lista Fields, ver que el índice (en este caso el cuarto campo) es válido, y se accede a él: Fields[3].AsXXX 3- Por el nombre del campo, aquí primero se ha de buscar si ese campo existe y después se accede a él: Tabla.Fields['NombreCampo'].Asxxxx Y por último, otro que se usa mucho: 4- tabla.FieldByName('NombreCampo').Asxxx que también implica hacer una búsqueda para ver si ese campo existe en tiempo de ejecución. Puedes usar el que te sea más cómodo. Cita:
Tienes una agenda y en la base de datos lo guardas así: Código:
fecha hora tarea 01/01/2008 15:00 Ver la novela :-P 01/01/2008 17:00 Ver Barrio Sésamo :-P 02/01/2008 15:00 leer el periodico Código:
01/01/2008 02/01/2008 03/01/2008 15:00 Ver la novela :-P leer el periodico 17:00 Ver Barrio Sésamo :-P Dentro de un programa, puedes tener una ventana donde usas DBEdits y en otra ventana no usarlos. No hay ningún problema en mezclar las filosofías de trabajo. 2. ¿Tiene alguien idea de que de malo pueda tener usar los DBEdit o DBLabel? ¿se puede corromper la BD por un mal uso de estos o algo así? No usar DBEdits supone más trabajo. Estas 4 líneas lo hace automáticamente los DBEdits junto con un TDBNavigator:
Pones los DBEdits en el form, configuras su propiedad Datasource y Field, pones un TDBNavigator en el form, configuras su propiedad DataSource. Listo. Abres la tabla en el formCreate y ya puedes: - añadir registros - modificar registros - borrar registros - moverte entre registros ¡¡ sin escribir ni una sola línea de código !! Desventajas de usar DBEdits: - Todo lo que haces se graba directamente en la Base de datos, puede que en algún caso no te interese, quizás puedas usar Cache Updates (busca en el foro por ApplyUpdates) es un método intermedio entre usar DBEdits y usar Edits. 3. Creen que se pueda combinar el estilo que yo uso con este otro para lo que son las Querys por ejemplo, ya que los ADOQuerys que veo en ese tutorial ahorran mucho trabajo (que yo hacía usando ciclos y cosas así x_X) [/quote] Por supuesto, Todo los ciclos que haces en paradox puedes sustituirlo por un TQuery. Busca en internet un manual de SQL, en menos de 2 horas verás que son muy potentes y flexibles. PD. Como un extra, y que tal vez debí postear en el tema del tutorial, alguien sería tan amable de explicarme detalladamente esta query?: Como ya te han dicho, eso equivale a recorrer todos los registros de la tabla Banco, sumar el campo deposito de todos ellos (para saber el monto total) y por último devuelve el total en un campo que se llama "Suma De Depósitos" como bien dices es un "nombre", un Alias que se le da a la suma total. Cuando un campo lleva espacios en su nombre, se debe agregar los corchetes para que el SQL sepa donde empieza el nombre del campo y donde termina. Access usa corchetes, el SQL estandard usa dobles comillas por lo que puedes escribir ese campo de diversas formas, según el motor de bases de datos que uses. La palabra "Sum" es una función del lenguaje SQL, también puedes hacer promedios, medias, contar registros, etc con el mismo campo de todos los registros de la tabla. El TQuery es una forma de filtrar registros de una forma más flexible que la propiedad Filter del TTable.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#2
|
||||
|
||||
|
Unas precisiones a la estupenda explicación de Lepe en cuanto a la forma de acceder a los campos:
En la primera forma -los campos persistentes- si bien pueden usarse las propiedades AsXXXX, de hecho puede directamente usarse la propiedad Value. En otros casos, Value no sería recomendable porque a nivel de TField, se trata de un tipo genérico Variant, cuyo acceso no es óptimo; pero en el caso de campos persistentes, cada campo se crea del tipo adecuado: TIntegerField, TStringField, TBooleanField, etc. En la tercera forma: Tabla.Fields['NombreCampo'].Asxxxx más bien sería Tabla['NombreCampo'].Asxxxx o Tabla.FieldValues['NombreCampo'].Asxxxx // Saludos |
|
#3
|
|||
|
|||
|
Que tiene de malo o ineficiente hacerlo asi ....pregunto ?
Despues de ver este interesante hilo, me doy cuenta que yo estoy haciendo las cosas distinto a la mayoria (sera por mi pasado foxPro .. no se)a lo cual pregunto ...
yo accedo a los campos asi . edit.text:=TablaCampo.value; digo es rapido de escribir menos codigo que ... edit.text:=TablaCampo.AsTipo Jajaja es una letra menos .... no en serio que tiene de malo mi forma para cambiarla ya .... Gracias .... |
|
#4
|
|||
|
|||
|
Cita:
Genéricamente te puedo comentar que un Tedit solo almacenará datos de tipo texto, por tal motivo si tu campo es un entero y asignas con .Value te saltará una hermosa carita de error , en cambio si asignas al Tedit el valor como .AsString, aunque tu campo sea entero esta forma lo 'pasa' a texto.Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#5
|
|||
|
|||
|
Que tiene de malo o ineficiente hacerlo asi ....pregunto ?
Claro tienes razon egostar, por supuesto que en caso de un numero pues
edit1.text:=InttoStr(TablaCampo.value); por supuesto que si no lo hago asi pues bummm ahora entiendo que con .AsXXX no lo haria pues a probar ... Gracias ... Última edición por Kenobi fecha: 07-10-2008 a las 16:32:58. |
|
#6
|
||||
|
||||
|
Cita:
No estoy de acuerdo de que sean buenas las formas: Campo[1] Campo[nombre] Campo.value ya que con esto el peligro es que trabajamos con campos variant los cuales no se comprueban en el copilado si no en ejecucion con lo cual nos podemos encontrar con mas de un problema. Código Delphi [-]var1: integer; var2: string; CampoEntero1[nombre] := var1; //CampoEntero1 contiene nil CampoEntero1.asinteger := var1; //CampoEntero1 contiene 0 CampoEntero1[nombre] := var2; //Con esto revienta la aplicación CampoEntero1.asinteger := var2; //Con esto no copila la aplicacion Ademas no es lo mismo escribir Código Delphi [-]'La fecha es '+DateTimeToStr( CampoFecha[nombre] ); Lo cual ademas si no tiene un valor el campo revienta la aplicacion. que Código Delphi [-]'La fecha es '+CampoFecha.AsString; Espero sea util, Saludos. |
|
#7
|
||||
|
||||
|
A veces, es preferible que la aplicación reviente.
Imagina que el usuario no ha escrito la fecha para un registro. Si usas fecha.AsString, nos devolverá un valor 31/12/1900 y el programa sigue corriendo con "total alegría", si hacemos cálculos con esa fecha, nos dará un error en nuestro código, pero muy alejado del origen (quizás al imprimir el registro, al abrir una consulta que hasta ahora funcionaba correctamente, etc), tendrás que buscar durante mucho tiempo esa "avería". Si el programa revienta en la linea "DateTimeToStr( CampoFecha[nombre]" inmediatamente le dices al usuario: "ah!!, es que tienes que poner una fecha válida." y no te da dolores de cabeza. Por cierto, una precisión: Si una variable Variant no tiene asignado un valor, su valor es precisamente "unassigned" que no tiene nada que ver con "nil". Como siempre, todo depende de qué resultado quieras tener. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pasar Variables de Forma a Forma con delphi.net ASP | ASAPLTDA | .NET | 5 | 05-07-2007 20:51:31 |
| Como Pasar Variables de Forma a Forma con delphi.net ASP | ASAPLTDA | Internet | 2 | 02-07-2007 16:26:41 |
| Tuto en Flash de Windows | alex212 | PHP | 0 | 07-06-2007 17:07:10 |
| De que forma trabajar con firebird y dbExpress | fedelphi | Conexión con bases de datos | 2 | 24-11-2006 23:17:01 |
| tuto de Indy? | unko! | Internet | 4 | 09-02-2005 04:08:57 |
|