Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/04/2006, 00:44
desbarrao
 
Fecha de Ingreso: mayo-2005
Mensajes: 36
Antigüedad: 20 años
Puntos: 0
Se que es casi imposible que se de el caso pero como en teoria un buen programador debe tener cualquier situacion controlada...

En cuanto a usar el autonumerico que tiene Access o SQL Sever, por lo que tengo entendido no es muy recomendable por tema de portabilidad a otras bases de datos.

He mejorado un poco la funcion que ponia antes:

Código:
Function GetId(tabla, nombreid, wherecampos, wherevalores)
	vsSQL = "SELECT ISNULL(MAX(" & nombreid & "),0)+1 FROM " & tabla
	if wherecampos<>"" AND wherevalores<>"" then
		campos=split(wherecampos,",")
		valores=split(wherevalores,",")
		if ubound(campos)=ubound(valores) then
			vsSQL = vsSQL & " WHERE"
			for i=0 to ubound(campos)
				if i<>0 then vsSQL = vsSQL & " AND" end if
				vsSQL = vsSQL & " " & campos(i) & "="
				if IsNumeric(valores(i)) then
					vsSQL = vsSQL & valores(i)
				else
					vsSQL = vsSQL & "'" & valores(i) & "'"
				end if
			next
		end if
	end if
	GetId = vsSQL
End Function
Esta funcion la he probado solo en SQL Server. No se si en Access dara algun problema.

De todas formas si alguien sabe como poder controlar la concurrencia sin usar el truco que propone Muzztein (que esta muy bien pensado) que lo comente por favor.