Problema con COMBOBOX

6 views
Skip to first unread message

avazq...@gmail.com

unread,
Feb 12, 2026, 4:25:23 AMFeb 12
to avazq...@gmail.com

Tengo las siguientes tablas:

CREATE TABLE `pagocli` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `idcliente` int(11) unsigned DEFAULT 0,

  `fecha` date DEFAULT NULL,

  `tipopago` enum('1.- Caja','2.- Banco','3.- Efecto','4.- Visa') DEFAULT '1.- Caja',

  `concepto` smallint(6) unsigned DEFAULT 1,

  `motivo` varchar(60) DEFAULT ' ',

  `debe` decimal(11,2) DEFAULT 0.00,

  `haber` decimal(11,2) DEFAULT 0.00,

  `visa` decimal(11,2) DEFAULT 0.00,

  `bizum` decimal(11,2) DEFAULT 0.00,

  `banco` smallint(4) DEFAULT 0,

  `ctabanco` varchar(9) DEFAULT ' ',

  `numjustifi` int(11) DEFAULT 0,

  PRIMARY KEY (`id`),

  KEY `idx_pagocli_idcliente` (`idcliente`)

) ENGINE=InnoDB AUTO_INCREMENT=3735 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

CREATE TABLE `tabconcecli` (

  `id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,

  `idconceban` smallint(6) DEFAULT 3,

  `papelnomb` char(40) DEFAULT NULL,

  `tipo_pago` tinyint(3) unsigned NOT NULL DEFAULT 0,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=323 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;

Relación
pagocli.concepto = tabconcecli.id

Tengo el siguiente formulario frmpagocli
DEFINE WINDOW TEMPLATE ;

    AT 309,144 ;

    OBJ opago ;

    WIDTH 456 ;

    HEIGHT 472 ;

    BACKCOLOR Gris_Nono ;

    FONT 'MS Sans Serif' ;

    SIZE '10' ;

    ICON 'Bandera' ;

    MODAL ;

    TITLE 'Datos del Apunte'

@ 53,20 LABEL l_tipocobro VALUE 'Tipo Cobro' WIDTH 70 HEIGHT 20

@ 50,107 COMBOBOX C_TIPOPAGO ;

   WIDTH 150 HEIGHT 120 ;

   OBJ o_c_tipopago ;

   ITEMS lee_enum("pagocli","tipopago") ;

   value 1;

   ON CHANGE {|| o_concepto_pago:DeleteAllItems(), CargaConceptos( o_c_tipopago:Value ) }

  

@ 83,20 LABEL l_concepto VALUE "Concepto:" WIDTH 70 HEIGHT 20

@ 83,107 COMBOBOX C_CONCEPTO ;

   WIDTH 200 HEIGHT 150 ;

   OBJ o_concepto_pago ;

   ITEMS {}

END WINDOW

 

 

Function main()

LOAD WINDOW frmpagocli

CENTER WINDOW frmpagocli

               nTipoPago := 1

               // Ahora cargar conceptos

               CargaConceptos( o_c_tipopago:Value )
ON KEY ESCAPE OF frmpagocli ACTION { || frmpagocli.release }

ACTIVATE WINDOW frmpagocli

 

 

*************************************************

FUNCTION CargaConceptos( nTipoPago )

*************************************************

LOCAL aDatos:={}

LOCAL i

LOCAL nDefault

LOCAL nPos := 0

 

// Obtener conceptos del tipo seleccionado

aDatos := GetRows( ;

   'SELECT id, papelnomb FROM tabconcecli ' + ;

   'WHERE tipo_pago=' + LTrim(Str(nTipoPago)) + ;

   ' ORDER BY papelnomb', .f. )

 

// Limpiar completamente el combo

o_concepto_pago:DeleteAllItems()

 

// Si no hay datos salir

IF Empty(aDatos) .OR. Len(aDatos[1]) == 0

               msginfo("VACÍO, CONSULTA CON NONO")

               RETURN NIL

ENDIF

 

// Obtener ID por defecto según tipo

nDefault := Int( DefaultConceptoPorTipoPago( nTipoPago ) )

nPos:=0

// Añadir items al combo

FOR i := 1 TO Len(aDatos[1])

   o_concepto_pago:AddItem( ;

      AllTrim(aDatos[2][i]), ;   // texto

      Int(aDatos[1][i]) )        // id real

 

   IF int(aDatos[1][i]) = int(nDefault)

      nPos := i

   ENDIF

NEXT

 

// Si no existe usar el primero

IF nPos = 0

   nPos := 1

ENDIF

// Asignar posición correcta

o_concepto_pago:Value := nPos

 

RETURN NIL

 

**********************************************

FUNCTION DefaultConceptoPorTipoPago(nTipoPago)

**********************************************

DO CASE

   CASE nTipoPago == 1

       RETURN ado_value('SELECT id FROM tabconcecli WHERE papelnomb="A CUENTA CAJA"')

   CASE nTipoPago == 2

       RETURN ado_value('SELECT id FROM tabconcecli WHERE papelnomb="A CUENTA TRANSFERENCIA"')

   CASE nTipoPago == 3

       RETURN ado_value('SELECT id FROM tabconcecli WHERE papelnomb="A CUENTA EFECTO"')

   CASE nTipoPago == 4

       RETURN ado_value('SELECT id FROM tabconcecli WHERE papelnomb="A CUENTA VISA"')

ENDCASE

 

RETURN 0


- Cuando cambio el combo c_tipopago de valor, quiero que me refresque o_concepto_pago y que se me posicione en el ítems por defecto.

 

O_concepto_pago:value no me toma el valor de nPos.
La primera vez sí, pero las siguientes da valor 0.

Qué me falta?

 

Gracias

Saludos.

Antonio Vázquez

Reply all
Reply to author
Forward
0 new messages