![]() |
hacer filtro
hola que tal amigos, tengo una duda hice una form de busqueda de un articulo e hice un filtro cuando yo escribo lo que quiero buscar si me lo encuentra pero cuando le doy aceptar no me arroja ese articulo a la pantalla anterior osea pantalla maestro porque sera, mando mi codigo haber si alguien me ayuda gracias
|
Solo debes hacer esto:
Saludos. |
filtro
que tal amigo que tal ya le puse el codigo que pusiste y no queda hace lo mismo no me arroja nada que sera
|
quizas el problema este en la llamada, porq no colocas el codigo de donde lo llamas a ver que puede suceder.
|
Filtro
de hecho tengo la form principal de clientes y la form de busqueda el codigo lo estoy poniendo en la form de busqueda adonde tengo el filtro ahi debe de ir supongo yo
|
Filtro
mira en la pantalla principal de articulos tengo este codigo para que be abra el otro form de busqueda
procedure TFarticul.BtnBuscarClick(Sender: TObject); begin Fbusart := TFbusart.Create(Self); try Fbusart.ShowModal; finally if fbusart.cve_art <> '' then adoqarticulos.Locate('cveart',fbusart.cve_art,[]); Fbusart.Free; |
ok, estas bien, solo faltaria saber que esta devolviendo, coloca un break point en la linea if fbusart.cve_art <> '' then y fijate que valor toma el cve_art, avisa la respuesta para seguir aislando el problema
|
filtro
perdon por mi ingorancia pero como soy novato en esto apenas estoy agarrando la onda como inserto el break point gracias
|
Parate sobre la linea y presiona el boton F5, cuando el programa ejecute esa linea se detendra, le das F8 para que pase a la siguiente linea y colocando el mouse encima veras que valor obtiene.
Recuerda que para obtener el valor de la variable debe ser despues de asignado. |
filtro
que tal mira ya lo hice le precione la tecla f5 y dspues les precione la f8 y se ejecuto y me mando a la form principal donde se inician todas las forms y mando estos registros gracias
Thread Start: Thread ID: 3476. Process tienda.exe (3308) Process Start: C:\produc\tienda.exe. Base Address: $00400000. Process tienda.exe (3308) Module Load: tienda.exe. Has Debug Info. Base Address: $00400000. Process tienda.exe (3308) Module Load: ntdll.dll. No Debug Info. Base Address: $7C910000. Process tienda.exe (3308) Module Load: KERNEL32.dll. No Debug Info. Base Address: $7C800000. Process tienda.exe (3308) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $770F0000. Process tienda.exe (3308) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $77DA0000. Process tienda.exe (3308) Module Load: RPCRT4.dll. No Debug Info. Base Address: $77E50000. Process tienda.exe (3308) Module Load: Secur32.dll. No Debug Info. Base Address: $77FC0000. Process tienda.exe (3308) Module Load: GDI32.dll. No Debug Info. Base Address: $77EF0000. Process tienda.exe (3308) Module Load: USER32.dll. No Debug Info. Base Address: $7E390000. Process tienda.exe (3308) Module Load: msvcrt.dll. No Debug Info. Base Address: $77BE0000. Process tienda.exe (3308) Module Load: ole32.dll. No Debug Info. Base Address: $774B0000. Process tienda.exe (3308) Module Load: MSIMG32.dll. No Debug Info. Base Address: $76330000. Process tienda.exe (3308) Module Load: VERSION.dll. No Debug Info. Base Address: $77BD0000. Process tienda.exe (3308) Module Load: COMCTL32.dll. No Debug Info. Base Address: $58C30000. Process tienda.exe (3308) Module Load: IMM32.dll. No Debug Info. Base Address: $76340000. Process tienda.exe (3308) |
obviamente eso no es lo que necesitabamos,
Donde se marco la linea roja, sobre que instruccion exactamente, colocala sobre la instruccion que viene luego del finally. Otra mas: lees el valor de esta variable: cve_art, y lo asignas a esta cveart := ''; Estoy casi seguro que ese es el detalle. |
filtro
se paro la franja roja en la instruccion de begin
en la form maestra donde inician todas las forms begin Application.Initialize; Application.CreateForm(Tdatamodule1, datamodule1); Application.CreateForm(TFprincipal, Fprincipal); Application.CreateForm(TFarticul, Farticul); Application.CreateForm(TFtempo, Ftempo); Application.CreateForm(TFLinea, FLinea); Application.CreateForm(TFsub, Fsub); Application.CreateForm(TFClien, FClien); Application.CreateForm(TFProv, FProv); Application.CreateForm(TFCompras, FCompras); Application.CreateForm(TFBProv, FBProv); Application.CreateForm(TFinve, Finve); Application.CreateForm(TFbusart, Fbusart); Application.CreateForm(TFbuscaClie, FbuscaClie); Application.CreateForm(TFUsuario, FUsuario); Application.CreateForm(TFVende, FVende); Application.Run; |
revisa lo que te comentaba de las variables. creo que alli esta el problema
|
filtro
no queda tu crees mira lo raro es que tengo en otro programa la funcion y si me lada te voy a pasar el codigo que tiene en la form principal de articulos
procedure TFProductos.BitBtn4Click(Sender: TObject); begin FBuscaArticulo:=TFBuscaArticulo.Create(self); try FBuscaArticulo.ShowModal; finally If FBuscaArticulo.Cod_Parte <> '' then ADOQArticulos.Locate('CodParte',FBuscaArticulo.Cod_Parte,[]); FBuscaArticulo.Free; end; end; en en la form que tiene el filtro esta asi procedure TFBuscaArticulo.Edit1Change(Sender: TObject); var Filtro : String; begin If (Edit1.Text <> '') then begin ATArticulos.Filtered := False; If CBFiltro.Text = 'Código' then Filtro := 'CodParte Like '''+Edit1.Text + '*''' else If CBFiltro.Text = 'Descripción' then Filtro := 'Descripcion Like '''+ Edit1.Text + '*''' else If CBFiltro.Text = 'Categoría' then Filtro := 'Categoria Like '''+ Edit1.Text + '*'''; ATArticulos.Filter := Filtro; ATArticulos.Filtered := True end else ATArticulos.Filtered := False; end; procedure TFBuscaArticulo.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin IF Key = VK_DOWN then DbGrid1.SetFocus; end; procedure TFBuscaArticulo.BitBtn1Click(Sender: TObject); begin CodParte := ATArticulosCodParte.AsString; Cod_Parte := ATArticulosCodParte.AsString; Close; end; procedure TFBuscaArticulo.BitBtn2Click(Sender: TObject); begin CodParte := ''; Cod_Parte := ''; Close; end; procedure TFBuscaArticulo.DBGrid1DblClick(Sender: TObject); begin BitBtn1Click(DBGrid1); end; en donde no le entiendo es en los procedimientos que estan en rojo haber si me puedes esplicar el porque van asi y que funcion se lleva a cabo los que te marque en rojo este codigo en el otro programa si funciona bien |
Es porque tienes que declararlas como variables, eso es lo que sucede;
y por favor trata de usar las etiquetas. Saludos. |
Lo que te pasa es sencillo estas buscando en la variable cve_art, pero el valor se lo asignas a cveart, ves la diferencia no es la misma variable. Por eso una esta vacia y no te da el valor
|
filtro
pues creeras que no queda algo me esta fallando y no m edoy cuenta ya hasat borre todo y lo volvi a escribir por si fue un teclaso y nada cuando le doy f9 el run me manda directamente a cve_Art el renglon q te puse en rojo
procedure TFbusart.btnaceptarClick(Sender: TObject); var cveart, cve_art: string; begin cveart := ATArticuloscveart.AsString cve_art := ATArticuloscveart.AsString close; end; procedure TFbusart.btncancelaClick(Sender: TObject); var cveart, cve_art: string; begin cveart := ''; cve_art := ''; end; ya no se que hacer |
Hola
Saludos |
filtro
hola caral oye ya le puse todo el codigo como me lo escribes y nada siguen sin mandarme el codigo seleccionado a la pantalla maestro
|
filtro
caral quieres q te pase el codigo de la form de articulos como esta y tambien la de la form donde esta el filtro porque ya lo rebise todo y lo volvi hacer y no agarra
|
var cveart, cve_art: string;
Esas variables deben ser globales. Te tratare de explicar el concepto porq veo que lo llevas perdido. El asunto es el siguiente, tienes un formulario donde muestras informacion de un articulo determinado llamemoslo FProdutos, en este tienes un boton llamado busqueda cuyo codigo es:
Aqui lo que haces es abrir el formulario de busqueda llamado Fbusart, y en este formulario devuelves el codigo seleccionado por el usuario en una variable en tu caso cve_art. Este es el codigo que devuelve el codigo seleccionado, ubicado en el boton aceptar y cancelar respectivamente de la pantalla de busqueda fBusArt:
fijate que estoy utilizando una sola variable cve_art, muy distinto a cveart, pero en ningun momento la declare dentro del procedimiento local, esto se debe a que su declaracion esta en la seccion de variables del formulario de busqueda fbusart, algo asi
Espero haberte aclarado la situacion y ayudarte a encontrar el error, que esta dado por las distintas variables que utilizas y las declaras en donde no es |
filtro
que tal mira si rebise todo y que crees que ya quedo lo que tenia mal era que los campos de la form principal las tenia con direccion a un datasource mal y eso era lo que no me regresaba el articulo pero ya quedo ya que encuentro el articulo solo seleciono y le doy aceptar y ya me la pasa pues muchas gracias ya que si me dio lata esto y como comentaba que soy principiante pues gracias
|
| La franja horaria es GMT +2. Ahora son las 00:33:16. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi