Como Buscar un dato en una dw , si no existe
Bueno Francisco, eso es muy simple, pero todo depende de en dónde quieras buscar la información, si es directamente en el DW en donde estás ingresando el código o si es directamente sobre la base de datos.
Supongamos que tienes un DW en una ventana, en donde lo único que haz hecho es darle un InsertRow. Dicho DW tiene los campos necesarios para insertar un registro, digamos con la información de un artículo. En este caso la búsqueda del código se hace sobre la base de datos, no sobre el mismo DW. Entonces, en el Evento del DW, ItenChanged, pones algo como esto:
Integer li_Existe_Registro
If dwo.name = 'codigo' Then // Codigo es el nombre del campo al cual queremos saber si fue cambiado.
// Revisar si el Código Existe.
If Not IsNull(data) Then
li_Existe_Registro=0
// Buscar Código en la BD.
Select 1
Into :li_Existe_Registro
From Productos
Where Cod_Producto = :data;
If li_Existe_Registro = 1 Then
Messagebox('Mensaje', 'Código de producto ya existe, debe ingresar otro')
RETURN 2
End If
End If
End If
La otra forma sería, si tienes un DW en donde está toda la información de los productos, es decir, ya hiciste un Retrieve previo. Y luego insertas un registro, para agregar otro producto. Entonces la validación se hace sobre el mismo DW. Para este caso el código es igual al anterior, pero se reemplaza la búsqueda en la BD, por un Find('Cod_Producto = ~''+data+'~'', 1, RowCount())
Esta función retorna el número de registro en donde se encontró la coincidencia indicada en la condición. Es decir, si el registro con el código que se busca está en la lista del DW, regresa por ejemplo 123, si ahí lo localizó.
Hay muchas formas de hacer lo que quieres, otra opción sería tener un botón dentro del DW, para validar si existe el código, o leer toda la información en campos pegados en una ventana, sin usar un DW, lo que no es muy indicado porque lleva más trabajo.
Lo mejor que puedes hacer es experimentar y hacer pruebas.
Saludos.