Error en ejecución...Error 4605

15/02/2007 - 10:48 por Mocoyn | Informe spam
Hola me aparece un error durante la ejecución de un programa realizado en
Visual Basic .NET en el que se genera un documento de Word relleno con
información proveniente de unos datos almacenados en un SQL Server.

Me aparece el siguiente error:
Error 4605. Este método o propiedad no esta disponible porque hay un
problema de memoria o de disco.

Aparece cuando se ejecuta una función que durante la ejecución anterior al
programa ha funcionado correctamente miles de veces, y por los valores usados
debería seguir funcionando correctamente.

Espero respuestas. Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Angel. E. Ruiz. P
15/02/2007 - 20:29 | Informe spam
este mensaje de error puede aparecer cuando ningún documento está abierto
actualmente o el documento que está mencionando no está abierto.

para ofrecerte una solucion podrias colocar la funcion donde genera este
error.



Saludos cordiales,
Ángel Ruiz
MCTS .NET Framework 2.0 Windows Applications
Caracas - Venezuela
"El conocimiento es un bien, que crece a medida que se comparte"

"Mocoyn" escribió en el mensaje
news:
Hola me aparece un error durante la ejecución de un programa realizado en
Visual Basic .NET en el que se genera un documento de Word relleno con
información proveniente de unos datos almacenados en un SQL Server.

Me aparece el siguiente error:
Error 4605. Este método o propiedad no esta disponible porque hay un
problema de memoria o de disco.

Aparece cuando se ejecuta una función que durante la ejecución anterior al
programa ha funcionado correctamente miles de veces, y por los valores
usados
debería seguir funcionando correctamente.

Espero respuestas. Muchas gracias.
Respuesta Responder a este mensaje
#2 Mocoyn
16/02/2007 - 09:10 | Informe spam
Bueno, te escribo la funcion donde genera el error, pero te comento que la
llamada a esa función se produce correctamente..siempre..hasta q llega a un
límite.

Te pongo entre una linea en asteriscos donde se para el programa, tras haber
creado 200 hojas de word escritas.
-

Public Function Anexo(ByVal rutadestino As String) As Boolean

On Error GoTo Ctrl_Error
' En esta fase se realiza el Anexo al MICC

Dim ssql As String
Dim ds1 As DataSet = New DataSet
Dim ds2 As DataSet

Dim n_filas As Integer
Dim n_cruces As Integer
Dim i, j, k As Integer
Dim Tipo As String
Dim Cuenta As String

'Abrir fichero de errores
oErrorLog.Abrir(ErrorLog.TipoErrLog.elAnexoMICC)

'Obtenemos el numero de cuentas distintas que existen
ssql = "(SELECT
SUBSTRING(A.SourceReference,1,CHARINDEX('x',A.SourceReference)-2) AS Cuenta "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "JOIN " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS B "
ssql &= "ON A.SourceReference=B.SourceReference "
ssql &= "WHERE CHARINDEX('x',A.SourceReference)<>0 "
ssql &= "GROUP BY
SUBSTRING(A.SourceReference,1,CHARINDEX('x',A.SourceReference)-2)) "
ssql &= "UNION ALL"
ssql &= "(SELECT A.SourceReference "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "JOIN " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS B "
ssql &= "ON A.SourceReference=B.SourceReference "
ssql &= "WHERE CHARINDEX('x',A.SourceReference)=0 "
ssql &= "GROUP BY A.SourceReference) "
ssql &= "UNION ALL"
ssql &= "(SELECT
SUBSTRING(A.Reference,1,CHARINDEX('x',A.Reference)-2) AS Cuenta "
ssql &= "FROM " & BD.PropietarioTabla("APP_CUENTA") & ".APP_CUENTA
AS A "
ssql &= "WHERE CHARINDEX('x',A.Reference)<>0 "
ssql &= "GROUP BY
SUBSTRING(A.Reference,1,CHARINDEX('x',A.Reference)-2)) "
ssql &= "UNION ALL"
ssql &= "(SELECT A.Reference "
ssql &= "FROM " & BD.PropietarioTabla("APP_CUENTA") & ".APP_CUENTA
AS A "
ssql &= "WHERE CHARINDEX('x',A.Reference)=0 "
ssql &= "GROUP BY A.Reference) "
ssql &= "ORDER BY CUENTA"

BD.Ejecutar2(ssql, ds1)
n_filas = ds1.Tables(0).Rows.Count
If n_filas = 0 Then
oErrorLog.Escribir("No se han encontrado ningun registro para el
Anexo al MICC.")
Anexo = True
Else
On Error GoTo fallo
oBarraEstado.InicializarBarraDeProgreso(n_filas)
End If
For i = (n_filas - 1) To 0 Step -1
Cuenta = ds1.Tables(0).Rows(i).Item(0).ToString
oBarraEstado.AumentarBarraDeProgreso()
'Salto inicio, pag. 3
oDoc.SaltoAPag("3")
oDoc.Intro()
oDoc.EscribirTitulos(ds1.Tables(0).Rows(i).Item(0).ToString,
False)
ssql = "(SELECT SUBSTRING(A.Reference,1,CHARINDEX(' x
',A.Reference)), A.TIPO_ACCION "
ssql &= "FROM " & BD.PropietarioTabla("APP_CUENTA") &
".APP_CUENTA AS A "
ssql &= "WHERE SUBSTRING(A.Reference,1,CHARINDEX(' x
',A.Reference))='" & Cuenta & "') "
ssql &= "UNION ALL"
ssql &= "(SELECT A.Reference, A.TIPO_ACCION "
ssql &= "FROM " & BD.PropietarioTabla("APP_CUENTA") &
".APP_CUENTA AS A "
ssql &= "WHERE A.Reference='" & Cuenta & "') "
ds2 = New DataSet
BD.Ejecutar2(ssql, ds2)
n_cruces = ds2.Tables(0).Rows.Count
If n_cruces > 0 Then 'Cuenta Nueva o Eliminada
Tipo = ds2.Tables(0).Rows(0).Item(1).ToString
ds2.Dispose()
If Tipo = "CREADA" Then 'Cuenta Nueva
oDoc.Escribir("Se ha creado en el modulo actual y se
abonará con cargo a:")
CuentasNuevas(Cuenta)
Else 'Cuenta Eliminada
oDoc.Escribir("Se ha eliminado del modelo actual y se
abonaba con cargo a:")
CuentasAntiguasoEliminadas(Cuenta)
End If
Else 'Cuenta Modificada
ds2.Dispose()
oDoc.Escribir("Se ha modificado su asignación en el modelo
actual y se abonará con cargo a:")
CuentasNuevas(Cuenta)
oDoc.Intro()
oDoc.Escribir("Mientras en el modelo del año pasado se
abonaba con cargo a:")
CuentasAntiguasoEliminadas(Cuenta)
End If
oDoc.Grabar(rutadestino & "\AnexoMICC.doc")
Next 'FIN DE RECORRER TODAS LAS CUENTAS
ds1.Dispose()
oErrorLog.Cerrar()
Exit Function
fallo:
ds1.Dispose()
ds2.Dispose()
'Cerrar fichero de errores
oErrorLog.Cerrar()
If Err.Number <> 0 Then
Anexo = True
oBarraEstado.EscribirMensaje("Fallo en la generacion del
informe...")
MsgBox("ERROR : " & Err.Number & vbCr & Err.Description _
, vbExclamation, "MICC")
End If
Exit Function
Ctrl_Error:
ds1.Dispose()
'ds2.Dispose()
'Cerrar fichero de errores
oErrorLog.Cerrar()
If Err.Number <> 0 Then
Anexo = True
oBarraEstado.EscribirMensaje("Fallo en la generacion del
informe...")
MsgBox("ERROR : " & Err.Number & vbCr & Err.Description _
, vbExclamation, "MICC")
End If
End Function

Private Sub CuentasNuevas(ByVal Cuenta As String)

On Error GoTo Ctrl_Error

Dim ds3 As DataSet
Dim ds4 As DataSet
Dim ssql As String
Dim j, k As Integer

oDoc.Intro()
oDoc.BulletOn(, , True)
oDoc.Indentar()
ssql = "(SELECT A.DriverNameN "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS A "
ssql &= "WHERE SUBSTRING(A.SourceReference,1,CHARINDEX(' x
',A.SourceReference))='" & Cuenta & "' "
ssql &= "GROUP BY A.DriverNameN) "
ssql &= "UNION ALL"
ssql &= "(SELECT A.DriverNameN "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS A "
ssql &= "WHERE A.SourceReference='" & Cuenta & "' "
ssql &= "GROUP BY A.DriverNameN) "
ds3 = New DataSet
BD.Ejecutar2(ssql, ds3)
If ds3.Tables(0).Rows.Count = 0 Then
oErrorLog.Escribir("La cuenta " & Cuenta & " con tipo CREADA no
se encuentra en la tabla de cuentas Nuevas.")
Else
For j = 0 To ds3.Tables(0).Rows.Count - 1
If j > 0 Then 'Si no es el primero
oDoc.Intro()
End If
ssql = "(SELECT LEFT(A.DestinationReferenceN," & LongCuenta
& ") "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS A "
ssql &= "WHERE SUBSTRING(A.SourceReference,1,CHARINDEX(' x
',A.SourceReference))='" & Cuenta & "' "
ssql &= "AND A.DriverNameN='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "' "
ssql &= "GROUP BY A.DestinationReferenceN) "
ssql &= "UNION ALL"
ssql &= "(SELECT LEFT(A.DestinationReferenceN," & LongCuenta
& ") "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_N") &
".APP_Assignment_N AS A "
ssql &= "WHERE A.SourceReference='" & Cuenta & "' "
ssql &= "AND A.DriverNameN='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "' "
ssql &= "GROUP BY A.DestinationReferenceN) "
ds4 = New DataSet
BD.Ejecutar2(ssql, ds4)
For k = 0 To ds4.Tables(0).Rows.Count - 1
'**********************AQUI ESTA EL FALLO****************
oDoc.Escribir("La cuenta ")
'*****************************************************

oDoc.Escribir(Obtener_Descripcion(ds4.Tables(0).Rows(k).Item(0).ToString),
True)
If k < ds4.Tables(0).Rows.Count - 1 Then 'Si no es la
ultima
oDoc.Intro()
End If
Next
ds4.Dispose()
oDoc.IntroFalso()
'Se escribe el criterio de reparto
oDoc.Escribir("Criterio de reparto:", False, False,
Word.WdUnderline.wdUnderlineSingle, "Arial Narrow")
ssql = "SELECT A.DESC_CR "
ssql &= "FROM " & BD.PropietarioTabla("CRIT_REPART") &
".CRIT_REPART AS A "
ssql &= "WHERE A.COD_CR='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "'"
ds4 = New DataSet
BD.Ejecutar2(ssql, ds4)
If ds4.Tables(0).Rows.Count > 0 Then
oDoc.Escribir(" " &
ds4.Tables(0).Rows(0).Item(0).ToString)
Else
'No se ha encontrado criterio de reparto
oErrorLog.Escribir("No se encuentra el Criterio de
Reparto asociado a la cuenta(" & ds3.Tables(0).Rows(j).Item(0).ToString & ")")
End If
oDoc.IntroFalso()
ds4.Dispose()
Next
End If
ds3.Dispose()
oDoc.Intro()
oDoc.BulletOff()
oDoc.Outdentar()

Ctrl_Error:
If Err.Number <> 0 Then
oBarraEstado.EscribirMensaje("Fallo en la generacion del
informe...")
MsgBox("ERROR : " & Err.Number & vbCr & Err.Description _
, vbExclamation, "MICC")
End If
End Sub

Private Sub CuentasAntiguasoEliminadas(ByVal Cuenta As String)

On Error GoTo Ctrl_Error

Dim ds3 As DataSet
Dim ds4 As DataSet
Dim ssql As String
Dim j, k As Integer

oDoc.Intro()
oDoc.BulletOn(, , True)
oDoc.Indentar()
ssql = "(SELECT A.DriverNameA "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "WHERE SUBSTRING(A.SourceReference,1,CHARINDEX(' x
',A.SourceReference))='" & Cuenta & "' "
ssql &= "GROUP BY A.DriverNameA) "
ssql &= "UNION ALL"
ssql &= "(SELECT A.DriverNameA "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "WHERE A.SourceReference='" & Cuenta & "' "
ssql &= "GROUP BY A.DriverNameA) "
ds3 = New DataSet
BD.Ejecutar2(ssql, ds3)
If ds3.Tables(0).Rows.Count = 0 Then
oErrorLog.Escribir("La cuenta " & Cuenta & " con tipo ELIMINADO
no se encuentra en la tabla de cuentas Antiguas.")
Else
For j = 0 To ds3.Tables(0).Rows.Count - 1
If j > 0 Then 'Si no es el primero
oDoc.Intro()
End If
ssql = "(SELECT LEFT(A.DestinationReferenceA," & LongCuenta
& ") "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "WHERE SUBSTRING(A.SourceReference,1,CHARINDEX(' x
',A.SourceReference))='" & Cuenta & "' "
ssql &= "AND A.DriverNameA='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "' "
ssql &= "GROUP BY A.DestinationReferenceA) "
ssql &= "UNION ALL"
ssql &= "(SELECT LEFT(A.DestinationReferenceA," & LongCuenta
& ") "
ssql &= "FROM " & BD.PropietarioTabla("APP_Assignment_A") &
".APP_Assignment_A AS A "
ssql &= "WHERE A.SourceReference='" & Cuenta & "' "
ssql &= "AND A.DriverNameA='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "' "
ssql &= "GROUP BY A.DestinationReferenceA) "
ds4 = New DataSet
BD.Ejecutar2(ssql, ds4)
For k = 0 To ds4.Tables(0).Rows.Count - 1
oDoc.Escribir("La cuenta ")

oDoc.Escribir(Obtener_Descripcion(ds4.Tables(0).Rows(k).Item(0).ToString),
True)
If k < ds4.Tables(0).Rows.Count - 1 Then
oDoc.Intro()
End If
Next
ds4.Dispose()
oDoc.IntroFalso()
'Se escribe el criterio de reparto
oDoc.Escribir("Criterio de reparto:", False, False,
Word.WdUnderline.wdUnderlineSingle, "Arial Narrow")
ssql = "SELECT A.DESC_CR "
ssql &= "FROM " & BD.PropietarioTabla("CRIT_REPART") &
".CRIT_REPART AS A "
ssql &= "WHERE A.COD_CR='" &
ds3.Tables(0).Rows(j).Item(0).ToString & "'"
ds4 = New DataSet
BD.Ejecutar2(ssql, ds4)
If ds4.Tables(0).Rows.Count > 0 Then
oDoc.Escribir(" " &
ds4.Tables(0).Rows(0).Item(0).ToString)
Else
'No se ha encontrado criterio de reparto
oErrorLog.Escribir("No se encuentra el Criterio de
Reparto asociado a la cuenta(" & ds3.Tables(0).Rows(j).Item(0).ToString & ")")
End If
ds4.Dispose()
oDoc.IntroFalso()
Next
End If
ds3.Dispose()
oDoc.Intro()
oDoc.BulletOff()
oDoc.Outdentar()

Ctrl_Error:
If Err.Number <> 0 Then
oBarraEstado.EscribirMensaje("Fallo en la generacion del
informe...")
MsgBox("ERROR : " & Err.Number & vbCr & Err.Description _
, vbExclamation, "MICC")
End If
End Sub

-
Public MyW As Word.Application
.
.
Public Sub Escribir(ByVal Texto As String _
, Optional ByVal Cursiva As Boolean = False _
, Optional ByVal Negrita As Boolean = False _
, Optional ByVal Subrayado As Word.WdUnderline =
Word.WdUnderline.wdUnderlineNone _
, Optional ByVal FontName As String = "Arial Narrow")
', Optional ByVal Subrayado As WdUnderline = wdUnderlineNone

'Escribir una cadena de caracteres
MyW.Selection.Font.Italic = CInt(Cursiva)
MyW.Selection.Font.Bold = CInt(Negrita)
MyW.Selection.Font.Underline = Subrayado
If FontName <> "" Then
MyW.Selection.Font.Name = FontName
Else
MyW.Selection.Font.Name = "Arial Narrow"
End If '[FontName <> ""]
MyW.Selection.TypeText(Text:=Texto)
End Sub



"Angel. E. Ruiz. P" wrote:

este mensaje de error puede aparecer cuando ningún documento está abierto
actualmente o el documento que está mencionando no está abierto.

para ofrecerte una solucion podrias colocar la funcion donde genera este
error.



Saludos cordiales,
Ángel Ruiz
MCTS .NET Framework 2.0 Windows Applications
Caracas - Venezuela
"El conocimiento es un bien, que crece a medida que se comparte"

"Mocoyn" escribió en el mensaje
news:
> Hola me aparece un error durante la ejecución de un programa realizado en
> Visual Basic .NET en el que se genera un documento de Word relleno con
> información proveniente de unos datos almacenados en un SQL Server.
>
> Me aparece el siguiente error:
> Error 4605. Este método o propiedad no esta disponible porque hay un
> problema de memoria o de disco.
>
> Aparece cuando se ejecuta una función que durante la ejecución anterior al
> programa ha funcionado correctamente miles de veces, y por los valores
> usados
> debería seguir funcionando correctamente.
>
> Espero respuestas. Muchas gracias.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida