Estimados: No sé si el motor SQL de VFP es tán inteligente como para darse que cuenta que cuando se pide el máximo del campo campo clave, puede encontrarlo leyendo la clave mas grande del índice correspondiente.
Se podría crear el índice principal descendente, lo activamos y con un GO TOP, obtenemos el mayor valor. Otra que podríamos hacer es con un índice normal, hacer un seek( K_INFINITO, 'LaTabla' ) [donde K_INFINITO es una constante numérica muy grande ] con la opción SET NEAR ON, nos posiciona en el último registro y allí tenemos el número mayor, y no se si teniendo el índice activado, obtenemos lo mismo con GO BOTTOM (en cuanto a velocidad, debería ser así). En un entorno con muchos insert simultáneos, evidentemente lo del registro contador es el más seguro y posiblemente mas rápido que usar autoincremento, además el contador podría contar con cualquier sistema numérico (por ejemplo, base 36, LETRAS + números). Si los números pueden ser cualquier tipo de número , puede que te convenga generar algo que incluya el id del pc de origen más un ttoc( datetime(), 1 ) o sys(3) Saludos: Miguel ----- Mensaje original ---- De: Pablo Pioli <[EMAIL PROTECTED]> Para: GUFA List Member <[email protected]> Enviado: viernes 23 de noviembre de 2007, 10:09:27 Asunto: [GUFA] Re: [GUFA] RE: [GUFA] Programación Multiusuario <!-- _filtered {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;} _filtered {font-family:Tahoma;panose-1:2 11 6 4 3 5 4 4 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman", "serif";} a:link, span.MsoHyperlink {color:blue;text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {color:purple;text-decoration:underline;} p {margin-right:0cm;margin-left:0cm;font-size:12.0pt;font-family:"Times New Roman", "serif";} span.ec411225413-21112007 {} span.ec116485021-21112007 {} span.EstiloCorreo20 {font-family:"Calibri", "sans-serif";color:#1F497D;} span.EstiloCorreo21 {font-family:"Calibri", "sans-serif";color:#1F497D;} MsoChpDefault {font-size:10.0pt;} _filtered {margin:70.85pt 3.0cm 70.85pt 3.0cm;} div.Section1 {} --> La forma mas segura es bloquear el registro del contador, actualizarlo y desbloquearlo. Hacerlo dentro de una transaccion es mejor, aunque te puede dar problemas de contencion en entornos donde haya muchas actualizaciones simultaneas. Pero, en ese caso ya estarias usando SQL Server y el tema es otro. Pablo Pioli ----- Original Message ----- From: Roberto Tactac To: GUFA List Member Sent: Friday, November 23, 2007 12:51 AM Subject: [GUFA] RE: [GUFA] Programación Multiusuario Hola carlos En esos casos tengo una tabla que cada fila la uso como contador para distintos fines, recibos, ord pagos, presupuestos etc, en esste caso podes hacer lo mismo pero el nro recién tomarlo en el momentos antes de guardar (supongo que tenes un botón en donde se guarda y se valida la info no?), bueno aquí iria el tomado del nro, incrementas en 1 y posteriormente grabas la info con el nro tomado al comienzo.Creo que no deberías tener problemas Un abrazo De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Carlos A. Cuevas Enviado el: jueves, 22 de noviembre de 2007 15:08 Para: GUFA List Member Asunto: [GUFA] Programación Multiusuario Hola Tengo un formulario que genera presupuestos. Cada vez que viene un cliente asigna un numero temporal en el puesto que se atiende. Si tengo tres puestos, el numero temporal puede llegar a ser igual, pero cuando grabo tomo la precaución de que no exista ese numero grabado en la base (uno de los operadores ya grabo antes). Existe algún documento o ejemplo a seguir para manejar adecuadamente esto. Porque mi método no me convence. Atte. Carlos Los referentes más importantes en compra/ venta de autos se juntaron: Demotores y Yahoo! Ahora comprar o vender tu auto es más fácil. Vistá ar.autos.yahoo.com/
