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 24-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
Como extraer inforcion de un campo en dos columnas de un dbgrid!!!!

Buenos Dias

Mi dilema es que de un campo de una tabla tengo que sacar dos columnas pero la info que debe haber en una no debe salir en la otra. Ejemplo:
tabla->MO12.....
campo->MONTOMOV . . . . .Columns de DBGRID-> DEBE . . . . . HABER
. . . . . ------------ . . . . . . . . . . . . . . . . . . . --------- . . ------------
inform-> 300.16 . . . . . . . . . . . . . . . . . . . . . . . 300.16
. . . . . . 200.34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200.34
. . . . . . . 16.34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16.34

en la tabla hay otro campo que clasifica los numeros del MONTOMOV:
campo->DEBE_HABER
. . . . . .-------------
Iinform-> . . .D
. . . . . . . . . .H
. . . . . . . . . .H
Y no se como hacer para que el DBGRID agarre la tabla MONTOMOV y la divida en 2 y los clasifique.
Hise el siguiiente codigo:

procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= 'SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, CASE WHEN DEBE_HABER='+QUOTEDSTR('D')+' THEN SELECT MONTOMOV as DEBE FROM '+Tab+' END, CASE WHEN DEBE_HABER='+QUOTEDSTR('H')+' THEN SELECT MONTOMOV as HABER FROM '+Tab+' END from '+Tab+' WHERE DEBE_HABER= '+QUOTEDSTR('H')+' OR DEBE_HABER= '+QUOTEDSTR('D')+'';
Query1.Active:=True;
end;

Pero me tira error

GRACIAS DE ANTEMANO

Última edición por jomah fecha: 24-02-2012 a las 21:46:56. Razón: 'PORQUE AL GUARDAR ME MOVIO TODO DE LUGAR
Responder Con Cita
  #2  
Antiguo 24-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jomah.

Por favor, cuando incluyas código en tus mensaje usa TAG's, su uso es:



Saludos y gracias por tu colaboración.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 24-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jomah Ver Mensaje
Pero me tira error
¿Tenemos que adivinar el error?

Recuerda nuestra guía de estilo, gracias.
Responder Con Cita
  #4  
Antiguo 24-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Tenemos que adivinar el error?

Recuerda nuestra guía de estilo, gracias.
La BD, el concepto, el componente, el etc y para que no falte el otro etc....
No se que cuesta poner TODA la información.
No me habéis dicho desde cuando cobráis por letra.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 24-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
Código Delphi [-]
unit frmModelo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, Mask,
  DBCtrls;

type
  TfrmModelo1 = class(TForm)
    DBGrid1: TDBGrid;
    IMPRIMIR: TBitBtn;
    SALIR: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DataSource1: TDataSource;
    Query1: TQuery;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    Query1NUM_CTA: TStringField;
    Query1NUMDEPTO: TSmallintField;
    Query1CONCEP_PO: TStringField;
    Query1TIPCAMBIO: TFloatField;
    Query1MONTOMOV: TFloatField;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmModelo1: TfrmModelo1;
  Tab: String;

implementation

{$R *.dfm}

procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= 'SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, CASE WHEM DEBE_HABER='+QUOTEDSTR('D')+' THEN SELECT MONTOMOV as DEBE FROM '+Tab+' END, CASE WHEM DEBE_HABER='+QUOTEDSTR('H')+' THEN SELECT MONTOMOV as HABER FROM '+Tab+' END from '+Tab+'';
Query1.Active:=True;
end;

end.

y el errorn que me da cuando intenta entrar en la informacion de la tablame dice token: when
Responder Con Cita
  #6  
Antiguo 24-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Solo por arreglar algo esta consulta, sin modificarla.

Código Delphi [-]
procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= ' SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, '+
                  ' CASE WHEM DEBE_HABER='+QUOTEDSTR('D')+' THEN SELECT MONTOMOV as DEBE FROM '+Tab+' END, '+
                  ' CASE WHEM DEBE_HABER='+QUOTEDSTR('H')+' THEN SELECT MONTOMOV as HABER FROM '+Tab+' END '+
                  ' from '+Tab+'';
Query1.Active:=True;
end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 24-02-2012
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
bueno en el codigo pegado dice whem no wheN, tal vez sea el error
Responder Con Cita
  #8  
Antiguo 24-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
no el error me sigue apareciendo y dice asi:
invalid use of keyword
token: WHEN
Line number: 1.
Responder Con Cita
  #9  
Antiguo 24-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

La sintáxis (al menos en Firebird) es:
Código:
CASE
   WHEN <bool_exp1> THEN result1
   WHEN <bool_exp2> THEN result2
   ...
   [ELSE defaultresult]
END
Probá quitando el segundo CASE:
Código Delphi [-]
...
  'CASE WHEN DEBE_HABER = '+QUOTEDSTR('D')+' THEN SELECT MONTOMOV as DEBE FROM ' + Tab + ' END, '+
  'WHEN DEBE_HABER = '+QUOTEDSTR('H')+' THEN SELECT MONTOMOV as HABER FROM ' + Tab + ' END '+
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 25-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
no el error todavia me sigue apareciendo
ya nno ayo que acer con ese case
Responder Con Cita
  #11  
Antiguo 25-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por jomah Ver Mensaje
... ya nno ayo que acer con ese case
Disculpa, ¿qué dice ahí?
Responder Con Cita
  #12  
Antiguo 25-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
que ya no allo que hacer con ese 'case'
Responder Con Cita
  #13  
Antiguo 25-02-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.068
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Puedes copiar aquí exactamente el código que estás usando?
Responder Con Cita
  #14  
Antiguo 25-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
Código Delphi [-]
unit frmModelo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls, Buttons, Grids, DBGrids, ComCtrls, Mask,
  DBCtrls;

type
  TfrmModelo1 = class(TForm)
    DBGrid1: TDBGrid;
    IMPRIMIR: TBitBtn;
    SALIR: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DataSource1: TDataSource;
    Query1: TQuery;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    Query1NUM_CTA: TStringField;
    Query1NUMDEPTO: TSmallintField;
    Query1CONCEP_PO: TStringField;
    Query1TIPCAMBIO: TFloatField;
    Query1MONTOMOV: TFloatField;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmModelo1: TfrmModelo1;
  Tab: String;

implementation

{$R *.dfm}

procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= ' SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, '+
                  'CASE WHEN DEBE_HABER = '+QUOTEDSTR('D')+' THEN SELECT MONTOMOV as DEBE FROM ' + Tab + ' END, '+
                  'WHEN DEBE_HABER = '+QUOTEDSTR('H')+' THEN SELECT MONTOMOV as HABER FROM ' + Tab + ' END '+
                  ' from '+Tab+'';
Query1.Active:=True;
end;

procedure TfrmModelo1.FormCreate(Sender: TObject);
begin

end;

end.
Responder Con Cita
  #15  
Antiguo 25-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Son dos condiciones:
Código Delphi [-]
procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= ' SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, '+
                  ' iif( DEBE_HABER = 'D', (MONTOMOV as DEBE) , (MONTOMOV as HABER) ) from '+Tab;
Query1.Active:=True;
end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #16  
Antiguo 25-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Con Case es igual, son dos condiciones, si no es una entonces es la otra:
Código Delphi [-]
procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= ' SELECT NUM_CTA,NUMDEPTO,CONCEP_PO,TIPCAMBIO, '+
                  ' CASE WHEN DEBE_HABER = 'D' THEN (MONTOMOV as DEBE) ELSE (MONTOMOV as HABER) END '+
                  ' From '+Tab;
Query1.Active:=True;
end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #17  
Antiguo 25-02-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola jomah.

Te marcaba error en "When" porque cerrabas el Case prematuramente. Según te mostró ecfisa en mensajes anteriores, el End del case va después de todas las opciones "When". O sea que no es un "End" por cada When, sino un sólo "End" al final del Case.

En cuanto a la marca Acer de tu computadora, no creo que sea factor en este caso.
Responder Con Cita
  #18  
Antiguo 25-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Otra opción:

Código Delphi [-]
procedure TfrmModelo1.FormShow(Sender: TObject);
begin
Tab:= 'MO' + FormatDateTime('mmyy', Now) + '01';
query1.sql.text:= ' SELECT NUM_CTA, NUMDEPTO, CONCEP_PO, TIPCAMBIO, '+
                  ' CASE WHEN DEBE_HABER ='+QUOTEDSTR('D')+' THEN (MONTOMOV as DEBE) END, '+
                  ' CASE WHEN DEBE_HABER ='+QUOTEDSTR('H')+' THEN (MONTOMOV as HABER) END '+
                  ' from '+Tab;
Query1.Active:=True;
end;
end;
No estoy muy seguro de esta, me gustan mas las otras dos.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 25-02-2012 a las 01:30:18.
Responder Con Cita
  #19  
Antiguo 25-02-2012
jomah jomah is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 18
Poder: 0
jomah Va por buen camino
gracias muchas gracias por la ayuda

ahora ya no me tira error en el when ahora me dice token: = osea error en el igual
Responder Con Cita
  #20  
Antiguo 25-02-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tokem....... Que ?.
No creo que sea solo eso el error, que dice el error completo ?.
Cual de todos los codigos te ha funcionado, asi nos entendemos mejor ?
Saludos
__________________
Siempre Novato
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
DBGrid: Como redimensionar columnas si se redimensiona el dbGrid? quali OOP 6 08-02-2010 22:00:49
Como extraer field description de un campo? rulo_m Varios 13 30-01-2008 21:44:22
gbGrid: ¿como lleno columnas directamente que no vengan de un campo del SQL? gesDelf SQL 4 09-09-2006 21:12:13
¿Como se actualiza un campo de una tabla a partir de las columnas de otra? salvica SQL 12 09-07-2004 01:56:10
Como extraer datos de un DBgrid a otro DBgrid mickey Conexión con bases de datos 13 29-01-2004 05:05:30


La franja horaria es GMT +2. Ahora son las 21:26:50.


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