![]() |
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
|
La franja horaria es GMT +2. Ahora son las 06:10:13. |
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