Problemas con VB.Net 2008

#1
hola. les comento que tengo este pequeño codigo en plataforma .Net 2008...

Rst = New ADODB.Recordset
Rst.CursorLocation = ADODB.CursorLocationEnum.adUseServer
Rst.Open(vSQL, vC, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

If Rst.RecordCount > 0 Then
Do
GrdCobro.AddItem(Rst.Fields.Item("idcobro").Value & vbTab & Format("01/" & Rst.Fields.Item("mes").Value, "mmmm") & vbTab & Format(Rst.Fields.Item("fechapago").Value, "dd/mm/yyyy") & vbTab & Rst.Fields.Item("mensualidad").Value & vbTab & Rst.Fields.Item("inscripcion").Value
Rst.MoveNext()
Loop Until Rst.EOF
End If
Exit Sub
End If
pero me da este error de abajo

Error 1 Option Strict On prohíbe operandos de tipo Object para el operador '&'.
desearía que me pudieran ayudar. gracias
 

jmvd70

Bovino adicto
#2
Error

Saludos

El mensaje es muy claro, estás concatenando un objeto (campo de tipo objecto o binario) con texto y números.

Puede ser un campo de imagen o algo parecido.

Por cierto, no se ve que cierres el parentesis del AddItem.
 

fespanagt

Bovino adolescente
#3
Estas usando codigo de vb en net, si quieres seguir utilizandolo anda a propiedades del proyecto y coloca OPTION STRICT en OFF y listo, aunque, no es recomendable, deberias ese codigo convertirlo a una sentencia valida en net.
 
#4
Los recordset en .Net no existen ahora están para conexión a datos los dataset que son parecidos, mirate bien las cadenas de conexión aquí
Código:
h++p://www.connectionstrings.com/
y algo de .Net para conectar datos, si quieres algo rápido utiliza LINQ que viene con el VB2008
 
#5
Estoy Deacuerdo..
1. Recorset..? eso es de la epoca del VB5...
2. Deberias de usar la propiedad ToString en los objetos que tratas de unir o por lo menos tipearlos con string() o CStr()
 
#6
Los recordsets SI se pueden usar en VB.Net, solo si se usa la referencia al ado 'clasico' y no al ado.net que es el default. Aunque si, es mejor usar los dataset, tienen mas metodos y es mas flexible.
 

Akonerz

Bovino adicto
#7
estoy de acuerdo con los demas ese parece codigo de vb "clasico" no de plataforma .net
deberias de leer sobre conexion en ado.net para aprovechar al maximo la tecnologia en .net
 
#8
No se si ya te contestaron pero de todos modos voy a publicar mi respuesta .

Si el Grid que estas llenando es un datagridview ( o una de sus variantes) la manera de llenarlo es Grid.rows.add(Datos1, Datos2, Datos3, Etc...) eso de & vbTab & es para FlexGrid y en otro caso disena un grid con los campos que traes en el recordset y se lo gancgas al grid

Grid.DataSource = RecordSet
 
#9
La "option strict" especifíca una validación de tipos en tiempo de compilación. El establecerla en ON propicia un desarrollo fuertemente tipeado (strong typing), lo que resulta en que no puedes hacer conversiones implícitas de la misma manera que lo soporta VB.NET al poner esa opción en off, así como no podrás usar estrategias como el late binding. El desempeño es mucho mejor si la mantienes en ON y es una de las mejores prácticas. Lo que señala anakymkerberos es correcto, debes utilizar el tipo de dato correcto (por ejemplo invocando al método ToString). Ahora, tambien asigna el tipo de dato a tú objeto Rst (sólo lo estás instanciando).

Recomendaciones adicionales:

1.-Trabaja utilizando ADO.NET, preferentemente en modo desconectado (los resultsets son modo conectado y mantienen una conexión abierta en todo su ciclo de vida, lo cual puede provocar delays en el consumo del pool de conexión, bloqueos y round trips innecesarios).
2.-De ser posible, estudia la enterprise library en el application data access block.
3.-Si vas a pintar en un grid, usa opciones de binding, no pintes registro por registro.
4.-Si de todos modos vas a pintar registro por registro, mejor usa un StringBuilder para concatenar tus valores.

Espero sea de utilidad.

Saludos
 

uriel_cg

Bovino maduro
#10
Carnal yano pude leer todos los post e iwal y repito la teoria pero si estas seguro de estar bien en los tipos puedes intentar usar + en lugar de &, en algunas operaciones con strings tambien sirve

Saludos
 
#12
Si aún sirve, el problema es que VB no puede hacer las conversiones automaticas a cadena porque el OPTION STRICT esta en ON, por lo tanto ese trabajo de conversion te corresponde a ti, tendrias que usar un CType o poner en Off el option strict. Por otro lado, no te recomiendo esa tecnologia, es vieja, pesada y lenta, usa mejor ADO .Net, puedes llenar un grid de forma mas simple con un DataTable. Suerte.
 
Arriba