Re: Valor Nulo en SQL
Buenas tardes Foro Les quiero comentar que pude solucionar el tema de datos valores nulos. Tome un ejemplo de la web y funciona perfectamente. Gracias Juan y Javier por la ayuda. Screetshot del programa: D InvoiceData ds D InvNbr5p 0 D InvLineNbr3p 0 D ItemNbr 6a D ItemDescr30a D ItemPrice 5p 2 D QtySold 3p 0 D NullIndss 5i 0 dim(6) D NullValue s like(NullInds) inz(-1) exec sql declare Invoice cursor for SELECT Ln.InvNbr, Ln.LineNbr, Ln.ItemNbr, Itm.Descrip, Ln.Price, Ln.Qty FROM InvLine as Ln LEFT JOIN Items as Itm ON Ln.ItemNbr = Itm.Item; *inlr = *on; exec sql open Invoice; dow '1'; exec sql fetch Invoice into :InvoiceData :NullInds; if sqlstt = '02000'; leave; endif; if NullInds(4) = NullValue; // do whatever endif; enddo; Saludos y muchas gracias From: Carlos C. Sent: Thursday, June 29, 2017 2:15 PM To: forum.help400 Subject: Re: Valor Nulo en SQL Hola Juan Si, le agregue las opciones, igual no lee. Te paso como esta la hoja H. H DATEDIT(*DMY/) THREAD(*SERIALIZE) H DFTACTGRP(*NO) BNDDIR('QC2LE') H CVTOPT(*VARCHAR) H FIXNBR(*ZONED:*INPUTPACKED ) H ALWNULL(*USRCTL) Por eso ya hice la consulta en forma especifica. Gracias Juan. Saludos From: forum.help400-boun...@listas.combios.es on behalf of Juan Gutierrez Ruiz Sent: Thursday, June 29, 2017 2:07 PM To: forum.help400 Subject: Re: Valor Nulo en SQL hola Carlos en el programa RPG en la hoja H debes de poner el parametro ALWNULL(*USRCTL) o cuando lo compiles Crear programa RPG enlazado (CRTBNDRPG) Teclee elecciones, pulse Intro. Permitir valores nulos . . . . . ALWNULL*USRCTL espero te sirva saludos De: forum.help400-boun...@listas.combios.es en nombre de Carlos C. Enviado: jueves, 29 de junio de 2017 10:59 a. m. Para: forum.help400 Asunto: Valor Nulo en SQL Buenos dias Foro Una consulta, tema SQL. Tengo una tabla creada a traves de DDS y tiene valores nulos. Al ejecutar la sentencia en forma manual el SQL selecciona y despliega los registros sin problemas. Pero en el programaRPG obvia los registros con valores nulos; la consulta es? debo agregar una condicion al programa? Esta es la sentencia. Exec Sql Declare C1 Cursor For select * From mylib/mytabla Where MFCICC =:v1 and v2 Not in ('W', 'I') Order by case when :orca1255 = 'x' then x end FOR READ ONLY; Exec sql Open C1;// Abre Cursor For I to 999 ;// Abre un Loop para leer Exec sql Fetch C1 INTO :datoDs;// Estructura de datos definido como externo en la hoja D If SqlStt = '02000' ; Leave; Endif; EndFor ; Saludos y gracias !!! por la ayuda Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
Re: Valor Nulo en SQL
Hola Juan Si, le agregue las opciones, igual no lee. Te paso como esta la hoja H. H DATEDIT(*DMY/) THREAD(*SERIALIZE) H DFTACTGRP(*NO) BNDDIR('QC2LE') H CVTOPT(*VARCHAR) H FIXNBR(*ZONED:*INPUTPACKED ) H ALWNULL(*USRCTL) Por eso ya hice la consulta en forma especifica. Gracias Juan. Saludos From: forum.help400-boun...@listas.combios.es on behalf of Juan Gutierrez Ruiz Sent: Thursday, June 29, 2017 2:07 PM To: forum.help400 Subject: Re: Valor Nulo en SQL hola Carlos en el programa RPG en la hoja H debes de poner el parametro ALWNULL(*USRCTL) o cuando lo compiles Crear programa RPG enlazado (CRTBNDRPG) Teclee elecciones, pulse Intro. Permitir valores nulos . . . . . ALWNULL*USRCTL espero te sirva saludos De: forum.help400-boun...@listas.combios.es en nombre de Carlos C. Enviado: jueves, 29 de junio de 2017 10:59 a. m. Para: forum.help400 Asunto: Valor Nulo en SQL Buenos dias Foro Una consulta, tema SQL. Tengo una tabla creada a traves de DDS y tiene valores nulos. Al ejecutar la sentencia en forma manual el SQL selecciona y despliega los registros sin problemas. Pero en el programaRPG obvia los registros con valores nulos; la consulta es? debo agregar una condicion al programa? Esta es la sentencia. Exec Sql Declare C1 Cursor For select * From mylib/mytabla Where MFCICC =:v1 and v2 Not in ('W', 'I') Order by case when :orca1255 = 'x' then x end FOR READ ONLY; Exec sql Open C1;// Abre Cursor For I to 999 ;// Abre un Loop para leer Exec sql Fetch C1 INTO :datoDs;// Estructura de datos definido como externo en la hoja D If SqlStt = '02000' ; Leave; Endif; EndFor ; Saludos y gracias !!! por la ayuda Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
Re: Valor Nulo en SQL
muchas gracias Javier. Saludos From: forum.help400-boun...@listas.combios.es on behalf of Javier Mora Sent: Thursday, June 29, 2017 12:41 PM To: forum.help400 Subject: RE: Valor Nulo en SQL Tienes dos opciones 1. Utilizar las funciones IFNULL o COALESCE para convertir los nulos en un valor válido para RPG. 2. Utilizar una DS para controlar los campos nulos. Esto se consigue añadiendo en la sentencia SQL una DS de enteros que indicará si el campo es nulo (valor = 1) o no (valor = 0). En los manuales de programación de SQL lo explica con más detalle. Javier De: forum.help400-boun...@listas.combios.es [mailto:forum.help400-boun...@listas.combios.es] En nombre de Carlos C. Enviado el: jueves, 29 de junio de 2017 18:00 Para: forum.help400 Asunto: Valor Nulo en SQL Buenos dias Foro Una consulta, tema SQL. Tengo una tabla creada a traves de DDS y tiene valores nulos. Al ejecutar la sentencia en forma manual el SQL selecciona y despliega los registros sin problemas. Pero en el programaRPG obvia los registros con valores nulos; la consulta es? debo agregar una condicion al programa? Esta es la sentencia. Exec Sql Declare C1 Cursor For select * From mylib/mytabla Where MFCICC =:v1 and v2 Not in ('W', 'I') Order by case when :orca1255 = 'x' then x end FOR READ ONLY; Exec sql Open C1;// Abre Cursor For I to 999 ;// Abre un Loop para leer Exec sql Fetch C1 INTO :datoDs;// Estructura de datos definido como externo en la hoja D If SqlStt = '02000' ; Leave; Endif; EndFor ; Saludos y gracias !!! por la ayuda Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
Re: Valor Nulo en SQL
hola Carlos en el programa RPG en la hoja H debes de poner el parametro ALWNULL(*USRCTL) o cuando lo compiles Crear programa RPG enlazado (CRTBNDRPG) Teclee elecciones, pulse Intro. Permitir valores nulos . . . . . ALWNULL*USRCTL espero te sirva saludos De: forum.help400-boun...@listas.combios.es en nombre de Carlos C. Enviado: jueves, 29 de junio de 2017 10:59 a. m. Para: forum.help400 Asunto: Valor Nulo en SQL Buenos dias Foro Una consulta, tema SQL. Tengo una tabla creada a traves de DDS y tiene valores nulos. Al ejecutar la sentencia en forma manual el SQL selecciona y despliega los registros sin problemas. Pero en el programaRPG obvia los registros con valores nulos; la consulta es? debo agregar una condicion al programa? Esta es la sentencia. Exec Sql Declare C1 Cursor For select * From mylib/mytabla Where MFCICC =:v1 and v2 Not in ('W', 'I') Order by case when :orca1255 = 'x' then x end FOR READ ONLY; Exec sql Open C1;// Abre Cursor For I to 999 ;// Abre un Loop para leer Exec sql Fetch C1 INTO :datoDs;// Estructura de datos definido como externo en la hoja D If SqlStt = '02000' ; Leave; Endif; EndFor ; Saludos y gracias !!! por la ayuda Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.
RE: Valor Nulo en SQL
Tienes dos opciones 1. Utilizar las funciones IFNULL o COALESCE para convertir los nulos en un valor válido para RPG. 2. Utilizar una DS para controlar los campos nulos. Esto se consigue añadiendo en la sentencia SQL una DS de enteros que indicará si el campo es nulo (valor = 1) o no (valor = 0). En los manuales de programación de SQL lo explica con más detalle. Javier De: forum.help400-boun...@listas.combios.es [mailto:forum.help400-boun...@listas.combios.es] En nombre de Carlos C. Enviado el: jueves, 29 de junio de 2017 18:00 Para: forum.help400 Asunto: Valor Nulo en SQL Buenos dias Foro Una consulta, tema SQL. Tengo una tabla creada a traves de DDS y tiene valores nulos. Al ejecutar la sentencia en forma manual el SQL selecciona y despliega los registros sin problemas. Pero en el programaRPG obvia los registros con valores nulos; la consulta es? debo agregar una condicion al programa? Esta es la sentencia. Exec Sql Declare C1 Cursor For select * From mylib/mytabla Where MFCICC =:v1 and v2 Not in ('W', 'I') Order by case when :orca1255 = 'x' then x end FOR READ ONLY; Exec sql Open C1;// Abre Cursor For I to 999 ;// Abre un Loop para leer Exec sql Fetch C1 INTO :datoDs;// Estructura de datos definido como externo en la hoja D If SqlStt = '02000' ; Leave; Endif; EndFor ; Saludos y gracias !!! por la ayuda Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.