![]() |
![]() |
| 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
|
||||
|
||||
|
¡Buen día a todos!
Dakar: Descartando que hayas puesto accidentalmente un símbolo de igual (=) en la llamada la función ShowMessage, podemos decir que evidentemente la expresión está regresando un cadena de caracteres con el sufijo '='. Cacemos a esa liebre :Pregunta 1. ¿Qué sucede si en lugar de la columna devol indicas la columna monto? Esperamos respuesta. Al González. ![]() Última edición por Al González fecha: 15-03-2005 a las 19:29:48. |
|
#2
|
|||
|
|||
|
O.K.
Poniendo el codigo que me escribes en tu respuesta, me surgieron varias ideas de ir descartando el problema (acorralando la liebre). Al poner el codigo me muestra la sumatoria de cada vendedor, del campo monto, sin problemas;entonces me dije- "a lo mejor, por alguna informatica(no entendible) razon, desde la sumatoria del segundo campo en adelante me da el problema"-cambié mi SQL y puse "..sum(devol) devol, sum(monto) monto..", pero sigue igual, es decir los montos me los muestra bien y devol me los muestra mal. también pensé-"a lo mejor cuando existen valores en 0 está el problema o mejor aún cuando un vendedor tiene una sumatoria en 0 los demás presentan problemas"-Como el campo "monto" siempre tiene valores, los cambié y dejé algunos vendedores con todos sus montos en 0, a otros con algunos montos en 0 y a otros con los montos normales; lo probé, mostré los valores de la sumatoria del campo "monto" y se muestrán bien; si me pude dar cuenta que cuando la sumatoria es 0 siempre arroja un signo "=", pero cuando la sumatoria es mayor la muestra bien (esto podría ser subsanable al momento de traspasarlo a una tabla de paso) el problema es que "devol" lo sigue mostrando mal, es decir el único vendedor que tiene como sumatoria 25000 me lo muestra como "2500=". ![]() Gracias. |
|
#3
|
|||
|
|||
|
Para Finalizar
Hola a Todos:
Habiendo tenido un tiempo, y luego de cambiar la programación de mi proceso completo en donde necesitba obtener la sumatoria de los campos mencionados en este hilo, estuve revisando los componentes FIBPlus de los cuales había leido pero no los había utilizado. Bajé e instalé los componentes y luego hice la misma consulta, largamente mencionada, en un SqlClientDataset(1) y en un FibDataset(2); al mostrar en pantalla los datos generados por ambos componentes (específicamente el campo devol con valor "25000") el componente 1 me mostraba "2500=" y el 2 "25000"; es decir, existe un problema con el SqlClientDataset del DbExpress. Si alguien sabe de éste problema o algún comentario al respecto me gustaría escucharlo ya que cada vez que traté de buscar la solución a través de los distintos foros parece que a nadie le había sucedido. Además la idea de usar los Componentes DbExpress es que, en el posible cambio de la base de datos a otro motor, no tenga necesidad de cambiar los componentes de acceso a ésta. Espero algún comentario. ![]() |
|
#4
|
||||
|
||||
|
¡Buen día a todos!
Cita:
Cita:
Espero esto sea de utilidad, seguimos en contacto. Al González. ![]() |
|
#5
|
|||
|
|||
|
Hola a todos nuevamente,
Al González, creo haberlo mencionado por ahí, utilizo el Delphi 6 por lo que no cuento con el TSimpleDataset. Habría sido una buena alternativa haber podido probar ese componente para descartar definitivamente el problema. Ahora, lo que yo no sé es si alguien (en el foro ) ha trabajado con las mismas herramientas que yo menciono y si tiene algunas consultas a la base de datos similar a la que yo expongo y que no tenga problemas; así podría ir descartando otras variables externas, o no tanto, al Delphi como: instalación, Sistema Operativo, Parches, etc. La idea es, como tu has dicho AL, "Cazar la liebre". ![]() |
|
#6
|
||||
|
||||
|
¡Buen día a todos!
Dakar: Pregunta 2. ¿Ocurre lo mismo si en lugar de utilizar un componente TSQLClientDataSet, utilizas un TSQLQuery o TSQLDataSet? También puede ser que algún manejador de evento u otro tipo de establecimiento le esté metiendo ruido a la consulta. Prueba aislando por completo la consulta en una aplicación limpia (nueva), dónde sólo tengas los componentes esenciales involucrados en este caso. Seguimos en contacto. Al González. ![]() |
|
#7
|
|||
|
|||
|
Hola a todos,
Al Gonzalez: Me pareció una buena idea lo que planteaste, de hecho lo tenía pendiente, pero por problemas de tiempo no lo había probado; aunque en realidad no me tomó nada de tiempo hacer ésta prueba que creo debió ser la primera que tendría que haber hecho. OK, traspasé la misma consulta a los tres componentes y mostré los datos de los tres al mismo tiempo; el código es el siguiente; [ delphi ] procedure TForm1.Button1Click(Sender: TObject); var cSql : string; begin SQLQuery.SQL.Clear; cSql := 'SELECT vendedor, Sum(devol) devol, Sum(monto) monto'+ ' FROM Mov_NOTA GROUP BY vendedor'; SQLDSet.CommandText := cSql; SQLClDSet.CommandText := cSql; SQLQuery.SQL.Add(cSql); SQLDSet.open; SQLClDSet.Open; SQLQuery.Open; while not SQLDSet.Eof do begin ShowMessage('Devol SQLDSet: [' + SQLDSet.fieldbyname('devol').AsString+']'+ ' - Devol SQLClDSet : [' + SQLClDSet.fieldbyname('devol').AsString+']'+ ' - Devol SQLQuery : [' + SQLQuery.fieldbyname('devol').AsString+']'); SQLDSet.Next; SQLClDSet.Next; SQLQuery.Next; end; SQLDSet.Close; SQLClDSet.Close; SQLQuery.Close; end; [/delphi ] Ojalá se vea bien el código ya que soy nuevo en el foro y estoy usando por primera vez las etiquetas "[delphi]" (cualquier problema lo escribiré nuevamente). Bueno pongo aquí también mi ventana de diseño para despejar cualquier duda: ![]() El resultado de la prueba de la sumatoria del campo devol que debe mostrar "25000" es el siguiente (los resultados está entre paréntecis cuadrados para visualizarlos mejor): ![]() ![]() ![]() ![]() , sin palabras. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|