Ayuda como generar un generado de código

Gran Expertos por favor si me ayudaran tengo aplicativo Pb. 10.5 con mysql, es que quiere ser un generado de código tipo char, al hora de ser clic en botón nuevo, pero a la hora que compilo me sale error: (.. Nombre de controlador "Mysql.5 odbc"...////... Badventas. Funtion max does not exist)
Integer numer
Select Max(codigo)+1
into :numer
From clientes;
Sle_1.text=String(numer,"0000")
para que en la caja del singlelineedit me salga asi: 00001,0002 /// // asi sucesivamente he buscado en internet sintaxis del max en PB. 10.5 y no encontrado ayúdenme pofabor

1 respuesta

Respuesta
1
Tal vez por ser conexión ODBC, no esta permitiendo ejecutar el max, ya que la función agregada max() esta bien.
Ahora podrías variar un poco.
Select max(codigo)
into :number
from clientes;
y luego recien le sumas: Sle_1.text=String(numer + 1,"0000")
Como te comento a veces los Drivers ODBC para MySQL y Postgree no dejan ejecutar SQL embebido. En ese caso se puede crear un DW y cargarlo en un DataStore, ahí obtienes el máximo.
Suerte...
Muchas gracias experto, aplique lo que me dices y me sigue ese error creo que es por el ODBC, error: Database C0038: SQLSTATE=37000 (Mysql odbc 3.51 Drivers ..///... bdventas. funtion max does not exist), ahora lo que me dices de crear un Datastore y cargarlo con dw creado tengo poca idea sobre eso, podrías darme un pequeño ejemplo que lo necesito, mil gracias hermano experto.. por tu ayuda...
Ok...
Primero creas un DW grid o FreeF, d_clientes basado en la tabla clientes,
Luego este objeto datawindow (osea d_clientes) lo cargas en una variable datastore, el datastore es como un datawindow pero no visual. Entonces, por ejemplo, puedo cargarlo al momento crear un registro.
El código:
//variables
DataStore lds_cliente
string ls_numero, ls_codnuevo
long ll_nrow, ll_numero
//asignando el DW d_clientes a la variable local datastore
lds_cliente.dataobject = 'd_clientes'
lds_cliente.settransobject(SQLCA)
lds_cliente.retrieve()
//Sugiero que al momento de crear el objeto DW la le pongas order by por el código
//Ya sea descediente o ascendente, si es ascendente el ultimo valor del código estará
//En el ultimo registro y sino si es descendente el máximo valor delcodigo estará en el
//primer registro.
//Tons. Por lo que entiendo en tu ejemplo tu código lo guardas como cadena, y luego
//Esto debe convertirse en numero para hace la suma + 1 y volverlo a cadena.
//suponiendo q mi DW esta ordenado ascendente
ll_nrow = lds_cliente.rowcount()
ls_numero = lds_cliente.getitemstring(ll_nrow,'codigo')
ll_numero = int(ls_numero)
//por ultimo codigo nuevo seria
ls_codnuevo = string(ll_numero+1,'0000')
Y esto ya lo puedes asignar a cyualquie control, o al nuevo registro...
Gran experto solo una duda al escribir el script que me diste para crear un datastore:
String ls_numero, ls_codnuevo
long ll_nrow,ll_numero
ds_cliente.dataobject='d_clien'
ds_cliente.settransobject(SQLCA)
ds_cliente.retrieve()
ll_nrow=ds_cliente.rowcount()
ls_numero=ds_cliente.getitemstring(ll_nrow,'codigo')
ll_numero=integer(ls_numero)
ls_codnuevo=string(ll_numero+1,'0000')
Sle_1.text=ls_codnuevo
al momento de ejecutar me sale este error: Null object reference   at line 3 in clicked event of object cb_nuevo of w_cliente.
no se me dice null. Sera en el retrieve que hago, mi tabla si contiene registros... ayudame gran amigo experto a que se debe esto...
Viendo tu código, la linea 3 esta
ds_cliente.dataobject='d_clien'...
Primero.. no veo que haya es declarado la variable ds_cliente
Osea:
DataStore ds_cliente
Y la otra puede ser que el objeto datawindow "d_clien", no existe
Experto ayudame aquí en este error que aun me sigue saliendo yo se que tu puedes, puse el script como dijiste aquí esta;:
DataStore ds_cliente
string ls_numero, ls_codnuevo
long ll_nrow, ll_numero
ds_cliente.dataobject = 'd_clien'
ds_cliente.settransobject(SQLCA)
ds_cliente.retrieve()
ll_nrow = ds_cliente.rowcount()
ls_numero = ds_cliente.getitemstring(ll_nrow,'codigo')
ll_numero = integer(ls_numero)
ls_codnuevo = string(ll_numero+1,'0000')
Sle_1.text=ls_codnuevo
y me sale este error: Null object reference   at line 4 in clicked event of object cb_nuevo of w_cliente.
Has creado el objeto datawindow 'd_clien'
Lo que te dice en el error, es que estas haciendo referencia a un objeto nulo, por no decir que no existe d_clien, debes de crear un objeto datawindow con ese nombre.
Muchas gracias experto favorito el script tuyo esta muy bien solo que faltaba la creación del datastore:
lds_cliente=create datastore
Y salio la generación, ahora seguiré con mi proyectito experto se que contare contigo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas