Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Consulta demasiado compleja

Buenos dias
estoy haciendo un sistema contable y el sistema me arroja el mensaje que esta en el titulo
estoy usando Turbo delphi y Access 2003
lo que he podido determinar es que el mensaje me apacere algunos casos en el Locate y otros en el post
alguien sabe pq sucede esto?

adjunto el codigo
Código Delphi [-]
procedure TfrmMayorizacion.AcumulaCostos;
var gn_R1, gn_R2, gn_R3, gn_R4, gn_R5, gn_R6, gn_R7, gn_R8 :String;
    gu_R1, gu_R2, gu_R3, gu_R4, gu_R5, gu_R6, gu_R7, gu_R8 :String;
    sn_R1, sn_R2, sn_R3, sn_R4, sn_R5, sn_R6, sn_R7, sn_R8 ouble;
    su_R1, su_R2, su_R3, su_R4, su_R5, su_R6, su_R7, su_R8 ouble;
    x_r1, _Cuenta :String;
    x_SGN: Integer;
begin
  gn_R1 := 'nr1_' + Llenar (IntToStr(iMes),2);
  gn_R2 := 'nr2_' + Llenar (IntToStr(iMes),2);
  gn_R3 := 'nr3_' + Llenar (IntToStr(iMes),2);
  gn_R4 := 'nr4_' + Llenar (IntToStr(iMes),2);
  gn_R5 := 'nr5_' + Llenar (IntToStr(iMes),2);
  gn_R6 := 'nr6_' + Llenar (IntToStr(iMes),2);
  gn_R7 := 'nr7_' + Llenar (IntToStr(iMes),2);
  gn_R8 := 'nr8_' + Llenar (IntToStr(iMes),2);
  gu_R1 := 'ur1_' + Llenar (IntToStr(iMes),2);
  gu_R2 := 'ur2_' + Llenar (IntToStr(iMes),2);
  gu_R3 := 'ur3_' + Llenar (IntToStr(iMes),2);
  gu_R4 := 'ur4_' + Llenar (IntToStr(iMes),2);
  gu_R5 := 'ur5_' + Llenar (IntToStr(iMes),2);
  gu_R6 := 'ur6_' + Llenar (IntToStr(iMes),2);
  gu_R7 := 'ur7_' + Llenar (IntToStr(iMes),2);
  gu_R8 := 'ur8_' + Llenar (IntToStr(iMes),2);
  sn_R1 := 0;
  sn_R2 := 0;
  sn_R3 := 0;
  sn_R4 := 0;
  sn_R5 := 0;
  sn_R6 := 0;
  sn_R7 := 0;
  sn_R8 := 0;
  su_R1 := 0;
  su_R2 := 0;
  su_R3 := 0;
  su_R4 := 0;
  su_R5 := 0;
  su_R6 := 0;
  su_R7 := 0;
  su_R8 := 0;
  x_SGN := 0;
  tblCuentaGasto.Open;
  tblCuentaArea.Open;
  qryMovimientoContable.First;
  while not qryMovimientoContable.eof do
  begin
    _Cuenta := qryMovimientoContableCcta1.AsString;
    x_R1 := Copy(qryMovimientoContableCuenta.AsString,1,2);
    if Pos(x_r1, c_R1+' '+c_R2+' '+c_R3+' '+c_R4+' '+c_R5+' '+c_R6+' '+c_R7+' '+c_R8) > 0 then
    begin
      if Pos(qryMovimientoContableDh.AsString, '1DI+') > 0 then
        x_SGN := 1
      Else
        x_SGN := -1;
      end;
    if x_r1 = c_R1 then
      begin
        sn_R1 := sn_R1 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R1 := su_R1 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R2 then
      begin
        sn_R2 := sn_R2 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R2 := su_R2 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R3 then
      begin
        sn_R3 := sn_R3 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R3 := su_R3 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R4 then
      begin
        sn_R4 := sn_R4 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R4 := su_R4 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R5 then
      begin
        sn_R5 := sn_R5 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R5 := su_R5 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R6 then
      begin
        sn_R6 := sn_R6 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R6 := su_R6 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R7 then
      begin
        sn_R7 := sn_R7 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R7 := su_R7 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    if x_r1 = c_R8 then
      begin
        sn_R8 := sn_R8 + (x_SGN * qryMovimientoContablen_imp.Value);
        su_R8 := su_R8 + (x_SGN * qryMovimientoContableu_imp.Value);
      end;
    qryMovimientoContable.Next;
  end;
  if not tblCuentaGasto.Locate('Empresa;Periodo;Cuenta', VarArrayOf([dmGlobal.g_CodigoEmpresa, Copy(dmGlobal.g_Periodo,1,4), _Cuenta]), []) then
    Begin
      tblCuentaGasto.Append;
      tblCuentaGastoEmpresa.Value := qryMovimientoContableEmpresa.AsString;
      tblCuentaGastoPeriodo.Value := Copy (dmGlobal.g_Periodo,1,4);
      tblCuentaGastoCuenta.Value := _Cuenta;
    End;
    tblCuentaGasto.Edit;
    tblCuentaGasto.FieldByName(gn_R1).Value := tblCuentaGasto.FieldByName(gn_R1).Value + sn_R1;
    tblCuentaGasto.FieldByName(gn_R2).Value := tblCuentaGasto.FieldByName(gn_R2).Value + sn_R2;
    tblCuentaGasto.FieldByName(gn_R3).Value := tblCuentaGasto.FieldByName(gn_R3).Value + sn_R3;
    tblCuentaGasto.FieldByName(gn_R4).Value := tblCuentaGasto.FieldByName(gn_R4).Value + sn_R4;
    tblCuentaGasto.FieldByName(gn_R5).Value := tblCuentaGasto.FieldByName(gn_R5).Value + sn_R5;
    tblCuentaGasto.FieldByName(gn_R6).Value := tblCuentaGasto.FieldByName(gn_R6).Value + sn_R6;
    tblCuentaGasto.FieldByName(gn_R7).Value := tblCuentaGasto.FieldByName(gn_R7).Value + sn_R7;
    tblCuentaGasto.FieldByName(gn_R8).Value := tblCuentaGasto.FieldByName(gn_R8).Value + sn_R8;
    tblCuentaGasto.FieldByName(gu_R1).Value := tblCuentaGasto.FieldByName(gn_R1).Value + sn_R1;
    tblCuentaGasto.FieldByName(gu_R2).Value := tblCuentaGasto.FieldByName(gu_R2).Value + sn_R2;
    tblCuentaGasto.FieldByName(gu_R3).Value := tblCuentaGasto.FieldByName(gu_R3).Value + sn_R3;
    tblCuentaGasto.FieldByName(gu_R4).Value := tblCuentaGasto.FieldByName(gu_R4).Value + sn_R4;
    tblCuentaGasto.FieldByName(gu_R5).Value := tblCuentaGasto.FieldByName(gu_R5).Value + sn_R5;
    tblCuentaGasto.FieldByName(gu_R6).Value := tblCuentaGasto.FieldByName(gu_R6).Value + sn_R6;
    tblCuentaGasto.FieldByName(gu_R7).Value := tblCuentaGasto.FieldByName(gu_R7).Value + sn_R7;
    tblCuentaGasto.FieldByName(gu_R8).Value := tblCuentaGasto.FieldByName(gu_R8).Value + sn_R8;
    tblCuentaGasto.Post;
  tblCuentaGasto.Close;
  tblCuentaArea.Close;
  qryMovimientoContable.Close;
end;
Responder Con Cita
  #2  
Antiguo 09-03-2011
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Para comenzar, te recomiendo leer Guía de Estilo


Podrias dar un poco mas de información, ya que con estos antecedentes poco se puede hacer...

Podrias comenzar por colocar el codigo de la consulta de qryMovimientoContable...Como por ejemplo...

"Consulta demasiado compleja" = ?

Saludos cordiales
Responder Con Cita
  #3  
Antiguo 09-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cómo ya te han dicho, deberías primero que evitar poner tanto ruido en tu mensaje. Con ruido me refiero al código que has compartido. Este código no ayuda en nada según el error que te está apareciendo. El error parece estar relacionado con una consulta SQL, así que mejor sería que proporcionaras la consulta SQL que te está dando el error.

Por otro lado, no sé si seré yo o quién sabe, pero noto en tu mensaje cierta falta de tacto. Cómo si nos dijeras: VE, TENGO ESTE PROBLEMA, ASÍ QUE REVISEN MI CÓDIGO Y ENCUENTREN EL PROBLEMA! LUEGO ME AVISAN! esa no es la forma de tratar en este foro. Muchos de los que estamos aquí con vocación de ayuda incluso robamos tiempo de nuestros trabajos para intentar aportar nuestra ayuda u opinión aunque sea en un hilo al día. Disculpa sino es el caso, pero eso es lo que veo. Hay formas, gestos y maneras de decir y pedir las cosas y creo que la que has usado tú no ha sido la adecuada.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 09-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Chris Ver Mensaje
Por otro lado, no sé si seré yo o quién sabe, pero noto en tu mensaje cierta falta de tacto. Cómo si nos dijeras: VE, TENGO ESTE PROBLEMA, ASÍ QUE REVISEN MI CÓDIGO Y ENCUENTREN EL PROBLEMA! LUEGO ME AVISAN! esa no es la forma de tratar en este foro. Muchos de los que estamos aquí con vocación de ayuda incluso robamos tiempo de nuestros trabajos para intentar aportar nuestra ayuda u opinión aunque sea en un hilo al día. Disculpa sino es el caso, pero eso es lo que veo. Hay formas, gestos y maneras de decir y pedir las cosas y creo que la que has usado tú no ha sido la adecuada.

Saludos,
Chris
agradezco los consejos... solo quiero comentar que mi intension no es la de imponerme ni de obligar a nadie a que me ayude...

se que mucha gente ofrece su ayuda de manera desinteresada y creeme que mi intension es la misma toda vez que adquiera mas conocimientos de Delphi

volviendo al tema

he depurado las lineas del codigo y realizado pruebas
cuando elimino las lineas de codigo donde acumulo los importes.. el sistema funciona de maravilla, me graba los campos acumulados (por la cuenta), mas no los importes

cuando grabo al menos uno de los importes atraves de...
Código Delphi [-]
tblCuentaGasto.FieldByName('nr1_01').Value := tblCuentaGasto.FieldByName('nr1_01').Value + sn_R;
es que me aparece el error...
voy a seguir revisando
Responder Con Cita
  #5  
Antiguo 09-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Continuo revisando y me he dado cuenta de lo siguiente :
Cita:
631010....D....1000.00 graba en el campo Pasa ok
631020....D.....100.00 graba en el campo Pasa ok
631030....D....1500.00 graba en el campo Pasa ok
631040....D....1800.00 graba en el campo Pasa ok
631050....D......25.00 graba en el campo Pasa ok
631050....D....4000.00 Aqui me genera el Error
he creado un indice y aun asi me muestra el error que creo yo esta en la acumulacion, puesto que a la mala estoy grabando los datos en 1 solo campo (de los 224 campos que tiene)

o quiza es que tiene muchos campos? creen uds?
Responder Con Cita
  #6  
Antiguo 09-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Sinceramente no entiendo nada de lo que acabas de poner. No sé sinceramente a que te refieres con eso. Generas una consulta SQL que te pueda estar dando el problema? Si es así, podrías compartir esa consulta SQL?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 09-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Chris Ver Mensaje
Sinceramente no entiendo nada de lo que acabas de poner. No sé sinceramente a que te refieres con eso. Generas una consulta SQL que te pueda estar dando el problema? Si es así, podrías compartir esa consulta SQL?
aqui esta la consulta
Código SQL [-]
StrSql := 'Select * from TblMovimientoContable M where M.Empresa = ' + QuotedStr(dmGlobal.g_CodigoEmpresa) + ' and M.Periodo = ' +
               QuotedStr(Copy (dmGlobal.g_Periodo,1,4) + Llenar (IntToStr(iMes),2)) +
               ' and Left (M.Cuenta,1) = ' + QuotedStr('9') + ' Order By M.Periodo, m.Cuenta ' ;
 
o
 
Select * from TblMovimientoContable M where M.Empresa = '001' and M.Periodo = '200901' and Left (M.Cuenta,1) = '9' Order By M.Periodo, m.Cuenta

de esta consulta solo me interesan 2 campos
n_IMP (Importe en moneda nacional)
u_IMP (importe en moneda extranjera)

la idea es ir acumulando esos importes en la tabla tblCuentaGasto, de acuerdo a ciertas caracteristicas, como por ejemplo la cuenta '9' que cuenta destino tiene (se puede manejar hasta 8 cuentas destino x mes y se manejan hasta 15 meses contables y en ambas monedas ) por eso la cantidad de campos (8 * 14 * 2) = 224

me entiendes ahora?
Responder Con Cita
  #8  
Antiguo 10-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
despues de tanto batallar, me he dado cuenta que es el access el del problema, ni la consulta ni la forma como acumulo los saldos, me genera el error, quiza sean las limitaciones propias del access o haya que "configurar" la tabla con alguna propiedad en particular

hice las mismas pruebas en SQL 2000 y funciono a la perfeccion....

gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta sql Compleja oca SQL 9 21-04-2008 16:39:22
Consulta ¿compleja? salvica SQL 4 13-01-2008 20:03:09
La consulta es demasiado compleja mane Conexión con bases de datos 0 26-12-2007 10:00:07
Consulta compleja Jesús Pena SQL 3 19-07-2007 07:54:40
consulta SQL que me resulta compleja j2mg SQL 5 29-05-2003 22:50:13


La franja horaria es GMT +2. Ahora son las 10:06:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi