Contar datos en una tabla

hey tengo una preguntita.. Es que tú me ayudaste con una base de datos yo necesito juntar todos los libros de un tema y que lleven un correlativo esto es lo que tú me mandaste (yo también tengo dos tablas una de libros y otra de temas):
Yo tendría dos tablas por ej. LIbros y temas con la siguiente estructura
libros lib_id C(10), lib_descri C(30), lib_tema N(10)
temas tem_id N(10), tem_descri C(30)
La tabla de temas seria algo así:
tem_id tem_descri
1 Historietas
2 Novelas
3 Enciclopedias
4 Dramáticas.
Y así sucesivamente. Entonces tu tabla de libros podría ser así.l
lib_id Lib_descri lib_tema
001001 Platero y Yo 1
001002 Perurima 1
003001 Diccionario OCeano 3
003002 Diccionario xyz 3
003003 Dicionario Paleontologico 3
003004 Encilopedia de Anatomia 3
En este caso yo utilice los Ceros a la izquierda, pero 003004 seria 34 el cuarto libro del tema Enciclopedias, es decir todos los que son del tema enciclopedias debería empezar con 3, así el código 003002 es el segundo libro del tema 3, entonces comienza el programa pidiendo primero el tema, al pedir tema se de contar cuantos libros tenemos ya en ese tema y le sumamos uno.
Por ejemplo con este código.
calculate count(lib_tema) for lib_tema = thisform.text1.value to a
a=a+1
Con esto ya tenemos en la variable "a" el código siguiente del tema, seria así la generación del código.
xNuevoCodigo = padl(alltr(str(thisform.text1.value)),3,'0')+padl(alltr(str(a)),3,'0')
Pero no pasa del número uno, y en mi tabla de tema y libro el código está como carácter ya que se genera de la siguiente manera 001 .. 010 .. 100 hasta 999 etc.. Y todos los códigos están como carácter me preguntaba si eso es lo que está afectando y si me podrías ayudar a manera de no cambiar la estructura de los códigos ya que de esa manera me los solicitan ... Gracias! :)

1 respuesta

Respuesta
1
hay varias formas de solucionar el conteo de campos caracteres, por ejemplo
select max(val(tem_id)) as numero from temas
o simplemente obtener el numero de registros  y adicionarle mas uno
reccount('temas')+1, pero en este caso por lo que entendi el problema esta en
calculate count(lib_tema) for lib_tema=thisform.text1.value to a
cambia esta opcion por ej por :
calculate sum(1) for lib_tema=thisform.text1.value to a
eso deberia funcionar, pero si no funciona tambien puedes usar SQL asi
select lib_tema from libros where lib_tema=thisform.text1.value into cursor xx
a=reccount('xx')+1
con estas opciones hay que soluconar, prueba que valor te arroja en la variable a  para saber si el problema radica ahi, pon asi
wait wind str(a)  
para verificar el valor inmediatamente despues del codigo, me avisas cualquier cosa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas