![]() |
Lookup y otros problemitas
buenas a todos.
Quisiera hacerle unas preguntas sobre algunos problemas que me estan volviendo loco y no he podido solucionarlos. 1) hay alguna forma de hacer que el lookup en una tabla (table1.lookup) no diferencie mayusculas y minusculas (como por ej el locaseinsensitive)?? o si no.. hay alguna otra manera de buscar determinado registro de un campo por columnas? Me explico mejor.. tengo una tabla con los campos producto, stock y precio.. en un edit ingreso el nombre del producto y quiero q me devuelva la informacion del precio.. 2) me podrian decir la sentencia a utilizar para que cuando este dentro del edit al presionar la tecla "enter" presione un boton? 3) dentro de la misma tabla mensionada anteriormente quisiera q ademas de mostrarme el precio pueda restarle el stock? no se si se entiende, por las dudas ejemplifico: producto precio stock pc completa 1.400 20 yo ingreso en un edit la cantidad vendida y quiero q se reste al stock, es decir yo vendo 2 pcs completas y tendria q quedar producto precio stock pc completa 1.400 18 desde ya muchas gracias. |
creo que lo mejor que puedes hacer es trabajar con queries:
select * from tabla where uppercase(codigo) = uppercase(:parametro) donde :parametro va a ser el contenido del código insertado en el edit. Por otra parte, en el edit tienes el evento onkeyPress, donde puedes controlar si se ha pulsado enter (recibes la tecla por parámetro) y si es así hacer button.click Y por último, también con las queries puedes actualizar el campo: update tabla set stock = stock - paramstock where codigo = :paramcodigo :paramstock será el stock a restar, y :paramcodigo el código del producto Espero que te sirva de ayuda Un saludo Edu |
Te pongo otra vez el correo sin smilies:
creo que lo mejor que puedes hacer es trabajar con queries: select * from tabla where uppercase(codigo) = uppercase(:parametro) donde :parametro va a ser el contenido del código insertado en el edit. Por otra parte, en el edit tienes el evento onkeyPress, donde puedes controlar si se ha pulsado enter (recibes la tecla por parámetro) y si es así hacer button.click Y por último, también con las queries puedes actualizar el campo: update tabla set stock = stock - paramstock where codigo = :paramcodigo :paramstock será el stock a restar, y :paramcodigo el código del producto Espero que te sirva de ayuda Un saludo Edu |
lo del lookup ya lo pude solucionar de otra manera, fue por un error mio q fallaban las cosas.. :D
pero ahora paso a preguntarte, lo del onkeypress lo intente utilizar, pero no se como hacer para q solo me tome el "ENTER". osea.. logro q se efectue el click en el boton pero al apretar cualquier tecla. :( y lo del stock no entendi, si podrias ejemplificarme o darme alguna otra solucion porq no utilice query nunca y por mas q probe de mil formas no logre hacer q funcione. :confused: desde ya muchas gracias por las contestaciones anteriores. Salu2. |
Lo del onkeypress:
procedure TFrmMntPedidos.EdtReferenciaKeyPress(Sender: TObject; var Key: Char); begin if key = chr(13) then showmessage('se ha pulsado enter'); end; lo del query: update tabla set stock = stock - paramstock where codigo = paramcodigo Se supone que tienes una tabla que se llama "tabla" con un campo que se llama "codigo" que tiene la clave principal del código de artículo a actualizar y otro campo que se llama "stock" que tiene el stock del artículo. Se le pasa un parámetro paramstock con la cantidad a restar y otro parámetro paramcodigo que tiene el código del artículo. La consulta se "lee" de la siguiente manera: "actualiza la tabla "tabla" y asigna al campo stock lo que tenga menos el paramstock en los registos culo campo "codigo" valga "paramcodigo"" Espero que te sirva. Edu |
Antes que nada quiero agradecerte por la ayuda que me estas dando , ya q aunque sean cosas faciles no habia logrado hacer que funcionen y me fueron de gran ayuda.
Lo del onkeypress esta solucionado.. asi q lo unico q me quedaria es lo del query. Te explico que hice porq me tira un error, para ver si es algo q yo hice mal.. Coloque el query en un datamodule, donde estan el datasource y la tabla.. lo vincule con el database y el datasourse. En la propiedad SQL fue donde escribi la sentencia de "update Productos set Stock = Stock - strtofloat(form3.edit1.text) where Producto = form1.edit1.text". Luego donde necesito q reste el stock "datamodule2.query1.ExecSQL;" me tira error "Capability not supported" gracias una vez mas por tus respuestas |
Buenas!
Perdona mi tardanza, pero es que no había visto que preguntabas otra cosa. En la query no puedes referenciar a un campo de un formulario. Debes crear un parámetro y después, antes de ejecutar la select. En lugar de : update Productos set Stock = Stock - strtofloat(form3.edit1.text) where Producto = form1.edit1.text Debes poner: update Productos set Stock = Stock - :paramstock where Producto = :paramproducto y llamarlo de la siguiente manera: qry.parameters.parambyName('paramstock').Value := strtofloat(form3.edit1.text); qry.parameters.parambyname('paramproducto').Value := form1.edit1.text qry.execsql; Un saludo Edu |
La franja horaria es GMT +2. Ahora son las 08:34:26. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi