Página 1 de 1

Error al abrir un comando SQL

Publicado: Lun Ago 14, 2006 2:24 pm
por Christian
Hola tengo otro problema (espero que sea uno de los ultimos) tengo el
siguiente codigo y aqui te adjunto el mensaje de error.
if ::ValidaDatos(.T.) .and. Validar('Graba el pedido ?')
::TempPedidos:cSelect:='SELECT IDCLIENTE, PATENTE, COD_CLIENT, FECHA,
' + ;
'FECHA_ENT, NRO_DE_LIS, COD_VENDED, COD_TRANS,
ITEMS, ' + ;
'GRAVADO, IVA, TOTAL, ESTADO, NRO_PEDIDO_TGA,
PRESUP ' + ;
'FROM TempPedidos'
::TempPedidos:Open()
::TempPedidos:AddNew()
::TempPedidos:IdCliente :=::nIdCli
::TempPedidos:Patente :=::cPatente
::TempPedidos:Cod_Client :=::edCliente:Value
::TempPedidos:Fecha :=transf(dtos(::edFecha:Value),[email='@R]'@R[/email]
9999/99/99')
::TempPedidos:Fecha_Ent :=transf(dtos(::edFechaEnt:Value),[email='@R]'@R[/email]
9999/99/99')
::TempPedidos:Nro_de_lis :=::nCodLista
::TempPedidos:Cod_Vended :=::cCodVend
::TempPedidos:Cod_Trans :=::cCodTransp
::TempPedidos:Items :=::nItems
::TempPedidos:Gravado :=::nGravado
::TempPedidos:Iva :=::nIva
::TempPedidos:Total :=::nTotal
::TempPedidos:Estado :='PEND'
::TempPedidos:UpDate()
oSql:=::oBDIsi:NewDataSet('SELECT max(id) FROM TempPedidos')
oSql:Open()
nPedido:=oSql:FieldGet(1)
oSql:Close()
oSql:End()
::TempItemPed:cSelect:='SELECT IDPEDIDO, COD_ARTICU, CANTIDAD, PRECIO,
' + ;
'PRECIOSINIVA, TASAIVA, NRO_DE_LIS FROM
ItemTempPed '
::TempItemPed:Open() /// AQUI SE PRODUCE EL MENSAJE DE ERROR LINEA
128 ///
::Productos:gotop()
while !::Productos:Eof()
::TempItemPed:AddNew()
::TempItemPed:IdPedido := nPedido
::TempItemPed:Cod_Articu :=::Productos:Codigo
::TempItemPed:Cantidad :=::Productos:Cantidad
::TempItemPed:Precio :=::Productos:Unitario
::TempItemPed:TasaIva :=::Productos:TasaIVA
::TempItemPed:PrecioSinIva:=::Productos:PrecSIva
::TempItemPed:Nro_de_lis :=::nCodLista
::TempItemPed:UpDate()
::Productos:skip(1)
enddo
::TempPedidos:Close()
::TempItemPed:Close()
endif


Attached files Error.log (1.5 KB)Â

Error al abrir un comando SQL

Publicado: Lun Ago 14, 2006 6:50 pm
por _support_
christian,
Antes del error.log que muestras deberías haber recibido un mensaje del
propio driver ODBC indicando el error real que se está produciendo en la
instrucción SELECT ya que compruebo que no se puede ni siquiera abrir la
tabla temporal.
Un saludo,
"Christian" <christianassenza@yahoo.com.ar> escribió en el mensaje
news:[email=44e06b80@news.xailer.com...]44e06b80@news.xailer.com...[/email]
> Hola tengo otro problema (espero que sea uno de los ultimos) tengo el
> siguiente codigo y aqui te adjunto el mensaje de error.
>
>
> if ::ValidaDatos(.T.) .and. Validar('Graba el pedido ?')
> ::TempPedidos:cSelect:='SELECT IDCLIENTE, PATENTE, COD_CLIENT, FECHA,
> ' + ;
> 'FECHA_ENT, NRO_DE_LIS, COD_VENDED, COD_TRANS,
> ITEMS, ' + ;
> 'GRAVADO, IVA, TOTAL, ESTADO, NRO_PEDIDO_TGA,
> PRESUP ' + ;
> 'FROM TempPedidos'
> ::TempPedidos:Open()
> ::TempPedidos:AddNew()
> ::TempPedidos:IdCliente :=::nIdCli
> ::TempPedidos:Patente :=::cPatente
> ::TempPedidos:Cod_Client :=::edCliente:Value
> ::TempPedidos:Fecha :=transf(dtos(::edFecha:Value),[email='@R]'@R[/email]
> 9999/99/99')
> ::TempPedidos:Fecha_Ent :=transf(dtos(::edFechaEnt:Value),[email='@R]'@R[/email]
> 9999/99/99')
> ::TempPedidos:Nro_de_lis :=::nCodLista
> ::TempPedidos:Cod_Vended :=::cCodVend
> ::TempPedidos:Cod_Trans :=::cCodTransp
> ::TempPedidos:Items :=::nItems
> ::TempPedidos:Gravado :=::nGravado
> ::TempPedidos:Iva :=::nIva
> ::TempPedidos:Total :=::nTotal
> ::TempPedidos:Estado :='PEND'
> ::TempPedidos:UpDate()
>
> oSql:=::oBDIsi:NewDataSet('SELECT max(id) FROM TempPedidos')
> oSql:Open()
> nPedido:=oSql:FieldGet(1)
> oSql:Close()
> oSql:End()
>
> ::TempItemPed:cSelect:='SELECT IDPEDIDO, COD_ARTICU, CANTIDAD,
> PRECIO, ' + ;
> 'PRECIOSINIVA, TASAIVA, NRO_DE_LIS FROM
> ItemTempPed '
> ::TempItemPed:Open() /// AQUI SE PRODUCE EL MENSAJE DE ERROR LINEA
> 128 ///
>
> ::Productos:gotop()
> while !::Productos:Eof()
> ::TempItemPed:AddNew()
> ::TempItemPed:IdPedido := nPedido
> ::TempItemPed:Cod_Articu :=::Productos:Codigo
> ::TempItemPed:Cantidad :=::Productos:Cantidad
> ::TempItemPed:Precio :=::Productos:Unitario
> ::TempItemPed:TasaIva :=::Productos:TasaIVA
> ::TempItemPed:PrecioSinIva:=::Productos:PrecSIva
> ::TempItemPed:Nro_de_lis :=::nCodLista
> ::TempItemPed:UpDate()
> ::Productos:skip(1)
> enddo
> ::TempPedidos:Close()
> ::TempItemPed:Close()
> endif
>
>
>

Error al abrir un comando SQL

Publicado: Mar Ago 15, 2006 5:05 pm
por Christian
Lo raro es que no recibo ningun mensaje de error, lo que si lo pruebo desde
el IDE al 'SELECT max(id) FROM TempPedidos' y me da el mismo mensaje de
error y si al DataSet le cambio el select ya me comienza a dar mensajes de
error del driver ODBC que esta ocupado etc.
Por ahora lo solucione escribiendo la siguiente consulta : select id, fecha
from TempPedidos order by id desc
Lo que no se es como hacer para que me retorne una sola fila el comando SQL
?.
"Ignacio Ortiz de Zúñiga" <_support_@xailer.com> escribió en el mensaje
news:[email=44e0a9de@news.xailer.com...]44e0a9de@news.xailer.com...[/email]
> christian,
>
> Antes del error.log que muestras deberías haber recibido un mensaje del
> propio driver ODBC indicando el error real que se está produciendo en la
> instrucción SELECT ya que compruebo que no se puede ni siquiera abrir la
> tabla temporal.
>
> Un saludo,
>
> "Christian" <christianassenza@yahoo.com.ar> escribió en el mensaje
> news:[email=44e06b80@news.xailer.com...]44e06b80@news.xailer.com...[/email]
>> Hola tengo otro problema (espero que sea uno de los ultimos) tengo el
>> siguiente codigo y aqui te adjunto el mensaje de error.
>>
>>
>> if ::ValidaDatos(.T.) .and. Validar('Graba el pedido ?')
>> ::TempPedidos:cSelect:='SELECT IDCLIENTE, PATENTE, COD_CLIENT,
>> FECHA, ' + ;
>> 'FECHA_ENT, NRO_DE_LIS, COD_VENDED,
>> COD_TRANS, ITEMS, ' + ;
>> 'GRAVADO, IVA, TOTAL, ESTADO, NRO_PEDIDO_TGA,
>> PRESUP ' + ;
>> 'FROM TempPedidos'
>> ::TempPedidos:Open()
>> ::TempPedidos:AddNew()
>> ::TempPedidos:IdCliente :=::nIdCli
>> ::TempPedidos:Patente :=::cPatente
>> ::TempPedidos:Cod_Client :=::edCliente:Value
>> ::TempPedidos:Fecha :=transf(dtos(::edFecha:Value),[email='@R]'@R[/email]
>> 9999/99/99')
>> ::TempPedidos:Fecha_Ent :=transf(dtos(::edFechaEnt:Value),[email='@R]'@R[/email]
>> 9999/99/99')
>> ::TempPedidos:Nro_de_lis :=::nCodLista
>> ::TempPedidos:Cod_Vended :=::cCodVend
>> ::TempPedidos:Cod_Trans :=::cCodTransp
>> ::TempPedidos:Items :=::nItems
>> ::TempPedidos:Gravado :=::nGravado
>> ::TempPedidos:Iva :=::nIva
>> ::TempPedidos:Total :=::nTotal
>> ::TempPedidos:Estado :='PEND'
>> ::TempPedidos:UpDate()
>>
>> oSql:=::oBDIsi:NewDataSet('SELECT max(id) FROM TempPedidos')
>> oSql:Open()
>> nPedido:=oSql:FieldGet(1)
>> oSql:Close()
>> oSql:End()
>>
>> ::TempItemPed:cSelect:='SELECT IDPEDIDO, COD_ARTICU, CANTIDAD,
>> PRECIO, ' + ;
>> 'PRECIOSINIVA, TASAIVA, NRO_DE_LIS FROM
>> ItemTempPed '
>> ::TempItemPed:Open() /// AQUI SE PRODUCE EL MENSAJE DE ERROR
>> LINEA 128 ///
>>
>> ::Productos:gotop()
>> while !::Productos:Eof()
>> ::TempItemPed:AddNew()
>> ::TempItemPed:IdPedido := nPedido
>> ::TempItemPed:Cod_Articu :=::Productos:Codigo
>> ::TempItemPed:Cantidad :=::Productos:Cantidad
>> ::TempItemPed:Precio :=::Productos:Unitario
>> ::TempItemPed:TasaIva :=::Productos:TasaIVA
>> ::TempItemPed:PrecioSinIva:=::Productos:PrecSIva
>> ::TempItemPed:Nro_de_lis :=::nCodLista
>> ::TempItemPed:UpDate()
>> ::Productos:skip(1)
>> enddo
>> ::TempPedidos:Close()
>> ::TempItemPed:Close()
>> endif
>>
>>
>>
>
>

Error al abrir un comando SQL

Publicado: Mié Ago 16, 2006 12:00 am
por jasm
Christian escribió:
> Lo raro es que no recibo ningun mensaje de error, lo que si lo pruebo desde
> el IDE al 'SELECT max(id) FROM TempPedidos' y me da el mismo mensaje de
> error y si al DataSet le cambio el select ya me comienza a dar mensajes de
> error del driver ODBC que esta ocupado etc.
>
> Por ahora lo solucione escribiendo la siguiente consulta : select id, fecha
> from TempPedidos order by id desc
> Lo que no se es como hacer para que me retorne una sola fila el comando SQL
> ?.
>
Depende del Servidor SQL que estes usando:
MySQL y Postgre SQL: SELECT * FROM tabla LIMIT 1
MS SQL Server: SELECT TOP 1 FROM tabja
Oracle: SELECT * FROM tabla WHERE RowNum <= 1
Informix: SELECT FIRST 1 FROM tabla
DB2: SELECT * FROM table FETCH FIRST 1 ROWS ONLY
Estas y otras diferencias hace que se complique la cosa cuando queremos
hacer programas basados en bases de datos SQL portables de una a otra.
Saludos,
Jose A. Suarez

Error al abrir un comando SQL

Publicado: Mié Ago 16, 2006 1:10 am
por Christian
Anduvo peeeeefecto (era MS SQL)
"José Alfonso Suárez Moreno" <jasm@tpvsoft.com> escribió en el mensaje
news:44e2441a$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Christian escribió:
>> Lo raro es que no recibo ningun mensaje de error, lo que si lo pruebo
>> desde el IDE al 'SELECT max(id) FROM TempPedidos' y me da el mismo
>> mensaje de error y si al DataSet le cambio el select ya me comienza a dar
>> mensajes de error del driver ODBC que esta ocupado etc.
>>
>> Por ahora lo solucione escribiendo la siguiente consulta : select id,
>> fecha from TempPedidos order by id desc
>> Lo que no se es como hacer para que me retorne una sola fila el comando
>> SQL ?.
>>
> Depende del Servidor SQL que estes usando:
>
> MySQL y Postgre SQL: SELECT * FROM tabla LIMIT 1
> MS SQL Server: SELECT TOP 1 FROM tabja
> Oracle: SELECT * FROM tabla WHERE RowNum <= 1
> Informix: SELECT FIRST 1 FROM tabla
> DB2: SELECT * FROM table FETCH FIRST 1 ROWS ONLY
>
> Estas y otras diferencias hace que se complique la cosa cuando queremos
> hacer programas basados en bases de datos SQL portables de una a otra.
>
> Saludos,
>
> Jose A. Suarez

Error al abrir un comando SQL

Publicado: Mié Ago 16, 2006 10:44 am
por _support_
Christian,
Consulta en la documentación el méodo QueryRow que te devuelve en una matriz
sólo la primera fila de la consulta.
Un saludo,
"Christian" <christianassenza@yahoo.com.ar> escribió en el mensaje
news:[email=44e1e2af@news.xailer.com...]44e1e2af@news.xailer.com...[/email]
> Lo raro es que no recibo ningun mensaje de error, lo que si lo pruebo
> desde el IDE al 'SELECT max(id) FROM TempPedidos' y me da el mismo mensaje
> de error y si al DataSet le cambio el select ya me comienza a dar mensajes
> de error del driver ODBC que esta ocupado etc.
>
> Por ahora lo solucione escribiendo la siguiente consulta : select id,
> fecha from TempPedidos order by id desc
> Lo que no se es como hacer para que me retorne una sola fila el comando
> SQL ?.
>
>
> "Ignacio Ortiz de Zúñiga" <_support_@xailer.com> escribió en el mensaje
> news:[email=44e0a9de@news.xailer.com...]44e0a9de@news.xailer.com...[/email]
>> christian,
>>
>> Antes del error.log que muestras deberías haber recibido un mensaje del
>> propio driver ODBC indicando el error real que se está produciendo en la
>> instrucción SELECT ya que compruebo que no se puede ni siquiera abrir la
>> tabla temporal.
>>
>> Un saludo,
>>
>> "Christian" <christianassenza@yahoo.com.ar> escribió en el mensaje
>> news:[email=44e06b80@news.xailer.com...]44e06b80@news.xailer.com...[/email]
>>> Hola tengo otro problema (espero que sea uno de los ultimos) tengo el
>>> siguiente codigo y aqui te adjunto el mensaje de error.
>>>
>>>
>>> if ::ValidaDatos(.T.) .and. Validar('Graba el pedido ?')
>>> ::TempPedidos:cSelect:='SELECT IDCLIENTE, PATENTE, COD_CLIENT,
>>> FECHA, ' + ;
>>> 'FECHA_ENT, NRO_DE_LIS, COD_VENDED,
>>> COD_TRANS, ITEMS, ' + ;
>>> 'GRAVADO, IVA, TOTAL, ESTADO,
>>> NRO_PEDIDO_TGA, PRESUP ' + ;
>>> 'FROM TempPedidos'
>>> ::TempPedidos:Open()
>>> ::TempPedidos:AddNew()
>>> ::TempPedidos:IdCliente :=::nIdCli
>>> ::TempPedidos:Patente :=::cPatente
>>> ::TempPedidos:Cod_Client :=::edCliente:Value
>>> ::TempPedidos:Fecha :=transf(dtos(::edFecha:Value),[email='@R]'@R[/email]
>>> 9999/99/99')
>>> ::TempPedidos:Fecha_Ent :=transf(dtos(::edFechaEnt:Value),[email='@R]'@R[/email]
>>> 9999/99/99')
>>> ::TempPedidos:Nro_de_lis :=::nCodLista
>>> ::TempPedidos:Cod_Vended :=::cCodVend
>>> ::TempPedidos:Cod_Trans :=::cCodTransp
>>> ::TempPedidos:Items :=::nItems
>>> ::TempPedidos:Gravado :=::nGravado
>>> ::TempPedidos:Iva :=::nIva
>>> ::TempPedidos:Total :=::nTotal
>>> ::TempPedidos:Estado :='PEND'
>>> ::TempPedidos:UpDate()
>>>
>>> oSql:=::oBDIsi:NewDataSet('SELECT max(id) FROM TempPedidos')
>>> oSql:Open()
>>> nPedido:=oSql:FieldGet(1)
>>> oSql:Close()
>>> oSql:End()
>>>
>>> ::TempItemPed:cSelect:='SELECT IDPEDIDO, COD_ARTICU, CANTIDAD,
>>> PRECIO, ' + ;
>>> 'PRECIOSINIVA, TASAIVA, NRO_DE_LIS FROM
>>> ItemTempPed '
>>> ::TempItemPed:Open() /// AQUI SE PRODUCE EL MENSAJE DE ERROR
>>> LINEA 128 ///
>>>
>>> ::Productos:gotop()
>>> while !::Productos:Eof()
>>> ::TempItemPed:AddNew()
>>> ::TempItemPed:IdPedido := nPedido
>>> ::TempItemPed:Cod_Articu :=::Productos:Codigo
>>> ::TempItemPed:Cantidad :=::Productos:Cantidad
>>> ::TempItemPed:Precio :=::Productos:Unitario
>>> ::TempItemPed:TasaIva :=::Productos:TasaIVA
>>> ::TempItemPed:PrecioSinIva:=::Productos:PrecSIva
>>> ::TempItemPed:Nro_de_lis :=::nCodLista
>>> ::TempItemPed:UpDate()
>>> ::Productos:skip(1)
>>> enddo
>>> ::TempPedidos:Close()
>>> ::TempItemPed:Close()
>>> endif
>>>
>>>
>>>
>>
>>
>
>