Pregunta

Hay una consecutivo servicio que monitorea los archivos en una carpeta en el servidor. Cada vez que los archivos se copian en esta carpeta, los archivos se mueven y se escribe un registro a una base de datos FileMaker Pro a través de una conexión ODBC. En ese mismo proceso que necesito el ID de la fila recién creada para crear un registro relacionado en otra tabla (con una restricción de clave externa). En Microsoft SQL Server, que haría uso de @@ identidad a ello, en Oracle, que haría uso de la sequence.CURRVAL. ¿Cómo puedo obtener el campo de la identidad de una fila recién creada en Filemaker?

¿Fue útil?

Solución

No soy un usuario experimentado de la interfaz ODBC en FileMaker, pero puedo sugerir una posible solución que podría funcionar.

Estoy asumiendo que usted está utilizando una instrucción INSERT para obtener los datos en FileMaker, que hay un campo de número "ID" en la tabla que está creando un registro en, y que el campo ID se establece en automática- introduzca un número de serie. Si este es el caso, la función MAX está soportado de acuerdo con la documentación de ODBC de FileMaker.

SELECT MAX (Table.ID) FROM Table

Otros consejos

Desafortunadamente FileMaker ODBC no tiene una función integrada para hacer esto. Es un problema real.

El problema se deriva del hecho de que FileMaker no tiene un soporte incorporado para claves principales. Por supuesto casi cada mesa tiene un identificador único, pero FileMaker no tienen ninguna manera interna para "saber" qué campo del desarrollador destinada a ser la clave principal. Eso hace que sea imposible que el motor de ODBC para saber cuál es el valor de dar de nuevo a usted.

Lo que creo que la mayoría de la gente termina haciendo en esta situación consiste en insertar un UUID de algún tipo en una nueva columna en el PP como parte de su CREAR. Entonces, inmediatamente Seleccione el ID usando otra consulta con el UUID en la cláusula where. Por lo que tiene que hacer dos consultas. La primera de ellas para insertar y el segundo para obtener la parte posterior ID.

Podría resolver este mediante la generación de un identificador único antes de insertar la nueva fila y luego añadir esta identificación en cada registro? Esto le permitirá identificar tanto los registros después de que se crearon.

También estaría preguntando por qué necesita esta funcionalidad. Va a añadir registros en 2 tablas diferentes cuando un archivo se copia en una carpeta. Obviamente, no tengo idea de cuál es la solución, así que no puedo aconsejar una manera u otra.

Mi consejo en este punto, sin embargo, sería la de volver a considerar la posibilidad de la lógica de la organización de datos de FileMaker en su proceso de ODBC. Suena como se supone que el registro original para actuar como un marcador o gatillo. ¿Puede el proceso de ODBC dejarse simplemente como un mecanismo para crear un registro y la lógica de cómo ese registro se utiliza dejarse en manos de otro proceso, por ejemplo un script de FM?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top