Usuario
ERROR 457 esta clave ya esta asociada a un elemento de esta colección

Pregunta
-
Hola a todos! Mi nombre es Gonzalo, soy nuevo en el foro.
If (intDeterminacionInicio > 0) And (intDeterminacionCantidad > 0) Then
Les comento que hace poco empece a trabajar en desarrollo en Visual Basic (mi primer experiencia en lo que respecta laboralmente) y por suerte lo vengo llevando bastante bien hasta que, como hoy, no puedo resolver un temita que me tiene bastante preocupado.
El tema es el siguiente, en el sistema que tenemos, importamos un archivo txt para cargar ciertos datos, y es ahí donde surge el problema. Se que es por un valor duplicado, pero no tengo idea como resolverlo (nunca trabaje con colecciones), por eso acudo y suplico a uds..
Les dejo la parte del codigo donde arroja el error (marcado con flechas) como asi tb adjunto el txt que tratamos de importar:
strDeterminacion = Trim(nonul(Mid(Fila_Archivo, intDeterminacionInicio, intDeterminacionCantidad)))
Else
strDeterminacion = Trim(nonul(Mid(Fila_Archivo, intDesde, intHasta - intDesde)))
End If
strDatos = stragr(strDatos, strDeterminacion, " - ")
'''VALOR
intDesde = intHasta + 1
intHasta = fncHasta_Enter(Fila_Archivo, intDesde)
If (intValorInicio > 0) And (intValorCantidad > 0) Then
strValor = num(Mid(Fila_Archivo, intValorInicio, intValorCantidad))
Else
strValor = num(Mid(Fila_Archivo, intDesde, intHasta - intDesde))
End If
strDatos = stragr(strDatos, strValor, " - ")
If Not ((strValor = "") _
And (strDeterminacion = "") _
And (strAnalisis = "") _
And (strCodigo = "")) Then
bolActualizar = True
Else
bolActualizar = False
End If
Else
If (mIntTipoImportacionExportacion = 0) _
And (mIntImportaExportaFormato = 1) Then
If (InStr(1, UCase(Fila_Archivo), "DATE") <> 0) Then
strFecha = Replace(Mid(Fila_Archivo, 6, 15), " ", "")
strDatos = stragr(strDatos, strFecha, vbCrLf)
ElseIf (InStr(1, UCase(Fila_Archivo), "PROTOCOLO") <> 0) Then
If (intCodigoInicio > 0) And (intCodigoCantidad > 0) Then
strCodigo = Trim(nonul(Mid(Fila_Archivo, intCodigoInicio, intCodigoCantidad)))
Else
strCodigo = num(Mid(Fila_Archivo, 11, 10), 0)
End If
strDatos = stragr(strDatos, strFecha, " - ")
ElseIf (Trim(Fila_Archivo) <> "") Then
intDesde = 1
intHasta = fncHasta_Numero(Fila_Archivo, intDesde)
If (intDeterminacionInicio > 0) And (intDeterminacionCantidad > 0) Then
strDeterminacion = Trim(nonul(Mid(Fila_Archivo, intDeterminacionInicio, intDeterminacionCantidad)))
Else
strDeterminacion = Trim(nonul(Mid(Fila_Archivo, intDesde, intHasta - intDesde)))
End If
strDatos = stragr(strDatos, strDeterminacion, " - ")
intDesde = intHasta
intHasta = fncHasta_Enter(Fila_Archivo, intDesde)
If (intValorInicio > 0) And (intValorCantidad > 0) Then
strValor = num(Mid(Fila_Archivo, intValorInicio, intValorCantidad))
Else
strValor = num(Mid(Fila_Archivo, intDesde, intHasta - intDesde), 0)
End If
strDatos = stragr(strDatos, strValor, " - ")
mColDeterminaciones.Add strDeterminacion
--------------->>>>>> mColDeterminacionesValores.Add strValor, Key:=strDeterminacion <<<<<<<<<<<<<<<<<<<--------------------------------------------------------------------------->>>>> ACA DA EL ERROR
End If
Else
If (mIntTipoImportacionExportacion = 0) Then
intDesde = 1
intHasta = fncHasta_Enter(Fila_Archivo, 1)
Else
strFecha = Mid(Fila_Archivo, 1, 10)
intDesde = 12
intHasta = fncHasta_Enter(Fila_Archivo, 12)
End If
If (intCodigoInicio > 0) And (intCodigoCantidad > 0) Then
strCodigo = Trim(nonul(Replace(Replace(Mid(Fila_Archivo, intCodigoInicio, intCodigoCantidad), "M", ""), "H", "")))
Else
strCodigo = Trim(nonul(Replace(Replace(Mid(Fila_Archivo, intDesde, intHasta - intDesde), "M", ""), "H", "")))
End If
If (mIntTipoImportacionExportacion = 1) Then
If (strCodigo = "ORI") Then
intDesde = intHasta + 1
intHasta = fncHasta_Enter(Fila_Archivo, intDesde)
strCodigo = Trim(nonul(Replace(Replace(Mid(Fila_Archivo, intDesde, intHasta - intDesde), "M", ""), "H", "")))
End If
Else
If Not (IsNumeric(strCodigo)) Then lngIdProtocolo = 0
End If
El error se da porque encuentra valores repetidos en el txt que quiero importar, y es esto lo que no puedo resolver, porque como decía antes, es la primera vez que veo algo de colecciones y si bien lei un monton, llevarlo a la practica no es sencillo (por lo menos para mi).
Si ven el txt, la primer columna tiene valores que se repiten, carga la primera vez y ya la segunda me da el error:
------------------->>> strValor = 19080161 <<<-------------------
ESTOS SON LOS PRIMEROS DATOS DEL TXT:
19080161 CREA-BI SER 7.899 mg/L
19080161 CHOLESTEROL SER 2.4161 g/L
19080161 TGwiener SER 1.4539 g/L
19080162 CREA-BI SER 10.7413 mg/L
19080162 UREAUV SER 0.4171 g/L
19080164 CREA-BI SER 7.6773 mg/L
19080164 UREAUV SER 0.3849 g/L
19080164 CHOLESTEROL SER 1.8642 g/L
19080164 TGwiener SER 0.7105 g/L
Todas las respuestas
-
El problema lo tienes en el valor que usas como clave para la colección.
La clave, si la usas, tiene que ser única por lo que no te va a valer ese código inicial que se repite en distintas líneas.
Yo te propondría no usar la clave o usar como valor de la clave el número de línea.Saludos, Javier J
-
El problema lo tienes en el valor que usas como clave para la colección.
La clave, si la usas, tiene que ser única por lo que no te va a valer ese código inicial que se repite en distintas líneas.
Yo te propondría no usar la clave o usar como valor de la clave el número de línea.
Saludos, Javier J
Hola Javier, muchas gracias por la respuesta!!
El tema es que nunca trabaje con colecciones y este código ya estaba escrito desde antes que yo empiece a trabajar con el..
Si no es mucha molestia, podrías indicarme algún ejemplo o como hacer lo que me decís?
Te agradezco mucho!
mColDeterminaciones.Add strDeterminacion
mColDeterminacionesValores.Add strValor, Key:=strDeterminacion -