PDA

Ver la Versión Completa : ¿Edicion de datos?


m@r
15-10-2003, 03:59:19
Hola a todos:
Tengo el siguiente problema. Tengo un Query con el cual realizo
consultas y ademas inserto, modifico, etc.. Para hacer lo anterior
uso la propiedad de RequestLive := True

Ademas tengo un grid que muestra los resultados de las
consultas y DBEdit's para hacer las modificaciones necesarias a
esos datos. (ambos en la misma forma)

Al dar un click en el titulo del grid ordeno los datos mediante
una sentencia SQL (ORDER BY). Pero despues de ordenar por
ciertos campos ya no puedo modificar los datos directamente
en los DBEdit's, no me marca ningun error simplemente la tabla
ya no esta en modo de edicion.

Algún consejo para solucionar mi problema?
Uso Delphi5 y archivos Dbase.

Gracias de antemano.

sanxpue
15-10-2003, 04:24:42
En el evento OnClickTitle es donde das click para ordenarlos entonces antes de que lo mandes a ordernar pones


Var
Pass : Boolean;
Begin
Pass := False;
If tabla.State = dsEdit Then
Pass := True;
.
.
Aqui haces tu orden
.
If Pass Then
Tabla.edit;
.
.
.
End;

m@r
16-10-2003, 02:21:34
Gracias sanxpue ya lo habia intentado y se produce un error en la linea del edit 'query: Cannot modify a read-only dataset'

Lei dentro del foro y da la ayuda de delphi que todas las consultas multitabla regresan resultados de solo lectura, pero yo hago una consulta que involucra una sola tabla y aun así regresa el resultado de solo lectura.
Puedo usar la propiedad CacheUpdates := True y el UpdateSQL y se soluciona mi problema, pero entonces muchos usuarios pueden editar el mismo registro y surge el conflicto de modificaciones.

Alguna otra sugerencia o ayuda para solucionar mi problema sin perder el bloqueo de registros?

Gracias

__cadetill
16-10-2003, 15:41:00
Creo (no lo aseguro al 100%) que una consulta con Order By siempre es de sólo lectura o no ser que utilices el UpdateSQL como mecionas.

m@r
17-10-2003, 00:14:40
Gracias..

Lo extraño es que yo realizo ORDER BY por 6 campos distintos y
solo en algunos regresa resultados de solo lectura y en otros
despues de ordenar puedo editar sin ningun problema.

Seguire investigando gracias por su tiempo

roman
17-10-2003, 01:05:21
Posteado originalmente por m@r
Lo extraño es que yo realizo ORDER BY por 6 campos distintos y solo en algunos regresa resultados de solo lectura y en otros despues de ordenar puedo editar sin ningun problema.


Quizá esto te ahorre un poco de investigación. Tomado de la ayuda de Delphi (bde32.hlp):

Updateable queries

Single-table queries

Queries that retrieve data from a single table are updatable provided that:


There is no DISTINCT key word in the SELECT.
Everything in the SELECT clause is a simple column reference or a calculated column, no aggregation is allowed. Calculated columns remain read-only.
The table referenced in the FROM clause is an updatable base table.
There is no GROUP BY or HAVING clause.
There are no subqueries in the statement.
There is no ORDER BY clause.


The read-only effect of an ORDER BY clause is negated and the query updatable if the ORDER BY clause uses a single column and there is a dBASE single-column primary or secondary index based on that same field. dBASE compound (expression) indexes will not negate the read-only effect of an ORDER BY clause. A Paradox single- or multi-field primary index will make the query updatable if the ORDER BY uses exactly the same columns (in the same order) as the index. Paradox secondary indexes will not negate the read-only effect of an ORDER BY clause.

Multi-table queries

All queries that join two or more tables will produce a read-only result set.

Calculated fields

For updateable queries with calculated fields, an additional field property identifies a result field as both read-only and calculated. Every call to the BDE function DbiPutField causes recalculation of any dependent fields.


// Saludos

m@r
17-10-2003, 18:00:44
Gracias Roman.

Me sirvio de maravilla. Problema resuelto.
me ahorraste muchisimo tiempo.

Gracias por tú ayuda y tú tiempo.

Saludos!!!