Avalados por :

Problemas al actualizar UDT [dbo].[@BinStock] desde un bucle de búsqueda de cursor: Solución y consejos

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Loading...

Hola SBOneans...

por favor, dedica un tiempo y arroja algo de luz.

el 14 de noviembre hice una pregunta sobre la actualización de UDT, preguntando cómo y con qué valores actualizar los campos predeterminados 'Code' y 'Name' de UDT. Aunque no obtuve respuestas satisfactorias, a través de un poco de prueba y error encontré una solución alternativa para lo mismo.

pero ahora, estoy enfrentando problemas al intentar actualizar el UDT [dbo].[@BinStock] desde un bucle de búsqueda de cursor. A continuación se muestra la parte relevante de toda mi consulta.

/* inicio de la consulta */

eliminar [dbo].[@BinStock]

/* se crean muchos códigos que crean otras tablas temporales aquí */

CREATE TABLE #tStBin

(

Wh_code VARCHAR(8),

Item_code VARCHAR(18),

St_bin VARCHAR(8),

qty MONEY

)

/*

#mStBin creado solo con fines de prueba/depuración. No sé acerca del Tipo y Tamaño de los campos estándar del sistema 'Code' y 'Name' en el UDT [dbo].[@BinStock], pero, el resto de los campos son iguales que los definidos en el UDT [dbo].[@BinStock]

*/

CREATE TABLE #mStBin

(

code varchar(10),

name varchar(20),

Wh_code VARCHAR(8),

Item_code VARCHAR(18),

St_bin VARCHAR(8),

qty MONEY

/* #mStBin creado solo con fines de prueba/depuración */

DECLARE @tWhcode VARCHAR(8),

@tItemcode VARCHAR(18),

@tStbin VARCHAR(8),

@tqty MONEY,

@trecno int

/* se crean muchos códigos que llenan la tabla temporal #tStBin aquí */

DECLARE cur1 CURSOR FOR

select T0.Wh_code, T0.Item_code, T0.St_Bin, sum(T0.qty)

FROM #tStBin T0

group by T0.Wh_code, T0.Item_code, T0.St_Bin

OPEN cur1

FETCH NEXT FROM cur1 INTO @tWhcode, @tItemcode, @tstbin, @tqty

set @trecno = 0

WHILE (@@fetch_status = 0)

BEGIN

set @trecno = @trecno + 1

/* en el momento en que se introduce la siguiente declaración de inserción, el sistema arroja un error */

insert into [dbo].[@BinStock] (code, name, U_Wh_Code, U_Item_code, U_St_Bin, U_Qty_Bal)

values (@trecno, 'Rec#'+cast(@trecno as varchar(5)), @tWhCode, @tItemCode, @tStBin, @tqty)

/* en la declaración de inserción anterior, si [dbo].[@BinStock] se reemplaza por #mStBin, la consulta funciona sin problemas! */

FETCH NEXT FROM cur1 INTO @tWhcode, @tItemcode, @tstbin, @tqty

END

CLOSE cur1

DEALLOCATE cur1

drop table #tStBin, #mStBin

/* fin de la consulta */

aunque insertar registros en la tabla temporal #mStBin con la misma declaración de inserción no da problemas, intentar insertar registros en el UDT [dbo].[@BinStock] con esa declaración de inserción resulta en un error. pero, no conozco el error exacto, ya que el sistema muestra el mensaje de error anterior encontrado y corregido!

otro problema irritante son los mensajes de error que el sistema nos arroja, realmente son confusos y engañosos, y la mayor parte del tiempo parece mostrar el mensaje de error anterior en lugar del real!

¿hay algún problema al insertar/actualizar UDTs dentro de un cursor? ¿cómo podemos hacerlo?

por favor, dedica un tiempo y arroja algo de luz.

Gracias y Saludos,

Raghu Iyer

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Loading...

La población de esos dos campos está bien, como puedes ver, ya me he encargado de eso. El problema es el error que SBO arroja. Hoy, cuando intento ejecutar la consulta, el mensaje de error es: 'Contratos de Servicio' (OCTR).

Necesito mantener una tabla de usuario (UDT) para almacenar el stock de Almacén_Lugar_de_Almacenamiento_Rack_Binwise.

De hecho, si este stock pudiera mantenerse en línea a través de FMS en cada pantalla de movimiento de stock, sería mejor, pero, dado que esto implica un disparador adecuado y considerando otras restricciones en SBO, como que solo permite un campo base para el disparador, este mini proyecto se abordará más adelante. Por el momento, nos gustaría vivir con la actualización en modo por lotes a través de una consulta.

Somos nuevos en SDK, por lo que estamos tratando de gestionar el espectáculo completamente a través de las herramientas disponibles dentro de SBO mismo, pero para realizar algunas personalizaciones significativas, si no hay otra forma que no sea a través del SDK, bueno, tampoco tenemos muchas opciones.

Gracias y saludos,

Kr

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Tradicionalmente, las UDT's se llenan manualmente por los usuarios desde dentro de B1 o a través del SDK como parte de la personalización. No puedo comentar sobre la validez y viabilidad de insertar directamente en una UDT.

Simplemente podrías intentar insertar lo siguiente para los campos de Código y Nombre.

1,1

2,2

3,3

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

¡Wow! ¡Esa fue una respuesta bastante rápida! Gracias.

De hecho, me preguntaba cómo llamar la atención de campeones de peso pesado como tú, ¡Suda!

Gracias por la información sobre el tipo y tamaño.

Sería genial si pudieras iluminarme también sobre ese problema de inserción de UDT.

Gracias y saludos,

Kr

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Raghu,

Code is 8 Chars (Alphanumeric)

Name is 30 Chars (Alphanumeric)

Inserting records using an INSERT statement into a UDT is not the right way.

Suda

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?