FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Insertar y/o modificar un campo con decimales
Hola a todos,
Nuevamente necesito de vosotros para seguir adelante. Desde hace un tiempo me he acostumbrado a hacer las inserciones/modificacioens en las bases de datos sin utilizar campos permanentes, simplemente monto la sentencia SQL antes de ejecutarla y le añado los campos que se insertan o modifican: Código:
SqlText:='INSERT INTO Proyectos (Descripcion, Importe) VALUES ('QuotedStr(AnsiUpperCase(Edit2.Text)) + ', ' + CurrencyEdit1.Text + ')'; // El importe es numérico por eso no va entre comillas ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SqlText); try ADOQuery1.ExecSQL; except ShowMessage('Error de ejecución en la sentecia SQL'+#13+sqltext); end; INSERT INTO Proyectos (Descripcion, Importe) VALUES ('PRUEBA', 125,85) como podeís ver, la coma decimal del importe me convierte ese importe en dos valores para la sentencia SQL y da error (porque tengo dos campos y tres valores). ¿Alguién me puede dar un consejo? Muchas gracias anticipadas.
__________________
Rafita. |
#2
|
|||
|
|||
Salva algunas casos muy especiales nunca se deben montar las queries de ese modo, siempre siempre hay que usar parametros, por motivos de eficiencia y seguridad.
Saludos |
#3
|
|||
|
|||
Solucionado
Era simple pero no se me ocurría, basta con sustituir las comas por puntos en el momento de preparar la sentencia.
Donde ponía CurrencyEdit1, sustituirlo por StringReplace(CurrencyEdit1.Text, ',', '.', [rfReplaceAll]) Así todo funciona perfectamente. supongo que habrá algún otro método más ajustado pero el caso es que funcione. Saludos a todos.
__________________
Rafita. |
#4
|
||||
|
||||
Si hay un método mejor, utilizar parámetros.
Si utilizaras parámetros no tendrías que hacer eso truquitos para guardar decimales. Y tambien podrías ahorrarte la variable SQLText. Ejemplo:
__________________
|
#5
|
||||
|
||||
Cita:
Por cierto, esto me recuerda este artículo ... http://www.clubdelphi.com/foros/show...en+programador |
#6
|
|||
|
|||
Muchas gracias a todos por vuestras aportaciones.
Disculpad la tardanza pero este fin de semana ha sido "off line". Los motivos de montar las sentencias así son dos: primero mi falta de conocimiento, y segundo el que un compañero empezó a hacerlo así. Inicialmente me definía los campos de forma permanente, pero me complicaba la vida tener que introducir una sentencia sólo para poder definir los campos, aunque tenía sus ventajas como ponerles las propiedades a los campos (título, formato, ... ). Además, mis compañeros no controlaban esta forma y no sabían modificar los que yo creaba, así que lo mejor me acoplé yo a su forma. Le agradezco a ContraVeneno que haya traducido mi codigo poniendole parámetros. Tomo nota y me pongo a cambiar el código que estoy haciendo. Y también me tomo nota del artículo. Todo lo que sea aprender me parece bien (aunque me pilla viejo). Saludos.
__________________
Rafita. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
insertar o modificar un registro completo a otro | osvrom | SQL | 10 | 23-01-2013 20:10:14 |
Como insertar, eliminar y modificar en c#? | danytorres | .NET | 2 | 09-05-2006 22:29:47 |
lentitud al Modificar/Insertar | kukinn | Conexión con bases de datos | 3 | 23-03-2004 09:37:57 |
Problema el insertar/modificar registro | ing_alsaac | Conexión con bases de datos | 0 | 29-02-2004 09:18:15 |
ejemplo para insertar,modificar con tdataset | marcelofabiani | Firebird e Interbase | 1 | 03-06-2003 18:44:06 |
|