Modo de edicion componente Firebird
Hola a todos!
estoy utilizando en delphi los componentes de Firebird, pero me sucede algo extraño que nunca me habia pasado. uno de los dataset que tengo por ejemplo: pfibdatasetReportes lo tengo en modo browse y justo cuando le pongo pfibdatasetReportes.edit para poder modificar un dato en vez de ponerse en estado dsedit se pone en estado dsinsert, mas adelante lo quiero forzar antes de hacerle un post ponerlo en edicion y sigue en insert. no entiendo por que me hace esto.. no se si haya alguna sugerencia a observar detenidamente que no me permita hacer lo que necesito. esta tonteria me tiene retrasada en mi trabajo. por otra parte hay otra duda que no entiendo muy bien estoy utilizando dbcombolookup y un grid, cuando requiero hacer una insercion en el grid con insert en el grid se añade una nueva linea, todo bien pero cuando deseo elegir el dato que ira en el grid este vuelve al estado anterior y apuntando al registro anterior que muestra el grid. ya probe quitando la conexion de dbcombolookup al mismo dataset que apunta el grid y de todos modos me quita el estado de insercion, cabe mencionar que cuando le da su gana lo hace bien y tambien mal. y lo que hago es que antes del post me cercioro que este en insert si no lo vuelvo a poner en ese estado pero tal vez no sea lo correcto. no se si me de a entender que no entiendo jjeje. de antemano gracias por la ayuda recibida. |
hola, si puedes poner ejemplo del código fuente mejor, para ver si estas haciendo algo incorrecto. Por otro lado ¿ Estas traceando el código ? Te lo digo, por que dependiendo de los eventos, te puede pasar que al hacer el insert se este cancelando por que entre a algún evento que cause la interrupción del Insert.
Por otro lado, a que te refieres con que usas componentes de Firebird. ¿ Te refieres a los componentes de conexión ? ¿ A los de edición ? |
ok aqui va lo que hice
Espero se entienda, muchas gracias por la atencion.
procedure TFMovimientos.SpBtnAreasClick(Sender: TObject); var FAgregarAreas :TFAgregarAreas; begin try FAgregarAreas := TFAgregarAreas.Create(Self); with DMHelpDesk do begin FAgregarAreas.EFolioLetra.Text:=pFIBDSViewReportesFOLIO.value + pFIBDSViewReportesIDLETRA.value; pFIBDSReportesAreas.active:=false; pFIBDSReportesAreas.Params[0].Value:=pFIBDSRepAreaEdoIDREPORTE.value;//pFIBDSReportesIDREPORTE.Value; pFIBDSReportesAreas.active:=true; pFIBDSReportes.Active:=FALSE; pFIBDSReportes.Params[0].Value:=pFIBDSViewReportesFOLIO.value;//******activo el dataset pFIBDSReportes.Active:=TRUE; FAgregarAreas.idreporte:=pFIBDSRepAreaEdoIDREPORTE.value end; FAgregarAreas.ShowModal; finally FAgregarAreas.Free; end; end; procedure TFAgregarAreas.SpBtnAceptarClick(Sender: TObject); begin with DMHelpDesk do begin if(pFIBDSReportesAreas.STATE<>dsinsert)then //****este es el dataset que me trae problemas con los combos lookup begin pFIBDSReportesareas.append;//y revalido que se ponga en insert otra vez porq tan solo con dar un click end; //en el combo se quita el estado de append que puse al inicio, sin tener eventos en ellos. pFIBDSReportesAreasIDAREA.value:=pFIBDSAreasIDAREA.value; pFIBDSReportesAreasIDSERVICIO.value:=pFIBDSIdServicioAreaIDSERVICIO.value; try begin If not pFIBDSReportesAreas.IsEmpty then begin pFIBDSReportesAreas.Post; if(pFIBDSReportes.STATE<>dsedit)then begin pFIBDSReportes.edit; //***aqui intento poner el dataset en edicion y sigue en insert end; pFIBDSReportes.Post; DMMov.pFIBTMov.CommitRetaining; end; end; except pFIBDSReportesAreas.Cancel; pFIBDSReportes.cancel; DMMov.pFIBTMov.RollbackRetaining; Application.MessageBox('Ha ocurrido un error con el registro'#13'Favor de verificar la información introducida','Error',MB_OK+MB_ICONERROR); end; procedure TDMHelpDesk.pFIBDSReportesAreasBeforePost(DataSet: TDataSet); begin with DMHelpDesk do begin if pFIBDSReportesAreasIDAREA.IsNull then begin Application.MessageBox('Debe Seleccionar el area','Error',MB_OK+MB_ICONERROR); exit; end else if pFIBDSReportesAreasIDSERVICIO.IsNull then begin Application.MessageBox('Debe Seleccionar el servicio','Error',MB_OK+MB_ICONERROR); exit; end; //OBT RA pFIBDSGet_IdRA.active:=true; pFIBDSReportesAreasIDRA.value:=pFIBDSGet_IdRAIDRA.value; pFIBDSGet_IdRA.active:=false; pFIBDSReportesAreasIDREPORTE.value:=pFIBDSReportesIDREPORTE.value; pFIBDSReportesAreasESTADO.value:='R'; pFIBDSReportesAreasFASIGNADO.Value:=now; //update pFIBDSReportes.Edit; /*******esta es la parte donde trato de poner el modo y me pone insert pFIBDSReportesESTADO.value:='P'; pFIBDSReportesFECHAAREASERV.value:=now; end; end; //este es el unico evento que tengo para el dataset problema de reportes pero no creo que tnga nada de malo procedure TDMHelpDesk.pFIBDSReportesCalcFields(DataSet: TDataSet); begin if pFIBDSReportesESTADO.value = 'R' then pFIBDSReportesCCEstado.Value:= 'R - Recibido' else if pFIBDSReportesESTADO.value = 'P' then pFIBDSReportesCCEstado.Value:= 'P - Proceso' else if pFIBDSReportesESTADO.value = 'T' then pFIBDSReportesCCEstado.Value:= 'T - Terminado' else if pFIBDSReportesESTADO.value = 'C' then pFIBDSReportesCCEstado.Value:= 'C - Concluido'; end; |
uso los componentes firebird
conexion
pfibdatabase transaccion pfibtransaction dataset pfibdataset y si, si traceo por eso me di cuenta que no me deja poner edit en vez de insert. no entiendo porque. |
hola, ¿ has mirado el estado en concreto, no sea que sea distinto de dsBrowse ? ¿ Y si en el datasource del combo asignas al principio Nil y luego al final le asignas el DataSource ? Para ver si interfiere, y si es así, al menos de este modo no te afectara.
|
Hola shany.
¿ Creaste algún trigger o procedimiento que pueda afectar a pFIBDSReportesAreas ? Saludos. |
ya resolvi lo del edit
fue una tonteria de mi parte, tenia una consulta con un filtro que use en otro modulo y pues siempre me regresaba vacio y pues no habia nada que editar por eso lo ponia en insert.
muchas gracias por su interes y aprecio su amable ayuda! |
La franja horaria es GMT +2. Ahora son las 19:54:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi