Visual Basic - MoveFirst Falla!!!!!

Life is soft - evento anual de software empresarial
 
Vista:

MoveFirst Falla!!!!!

Publicado por Ana Maria (72 intervenciones) el 27/06/2005 17:32:01
Hola y gracias por leer. Tengo un problema que paso a explicar.
Yo intento moverme al primer registro de una tabla con un solo campo que contiene almacenada una serie de fechas y me dice siempre que no existe o que fue eliminado el registro y estoy segura de que la tabla contiene registros porque aunque yo borro el contenido y luego lo relleno con cada ejecución del programa, siemprese rellena de datos y no esta vacía.

Porque ocurre esto por favor.
Ejemplo:

Dim rstFechasMedias As ADODB.Recordset

NomBase = "BDTablas.mdb"
Ruta = "c:\Trabajo\Finanzas\" & NomBase
Conexion = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & Ruta & ""
Set db = New ADODB.Connection
db.ConnectionString = Conexion
db.Open Conexion

Set rstFechasMedias = New ADODB.Recordset
rstFechasMedias.Open "INSERT INTO FECHASMedias SELECT DISTINCT fecha FROM MCHistorico ORDER BY fecha DESC", Conexion, adOpenStatic, adLockOptimistic
.
.
.
.
rstFechasMedias.MoveFirst '....aqui falla!!!....
.........................................................................................................................................
Tambien intente esto otro y meda el mismo error.

Dim rstFechasMedias As ADODB.Recordset

Set rstFechasMedias = New ADODB.Recordset
rstFechasMedias.Open "SELECT * FROM FECHASMedias", Conexion, adOpenStatic, adLockOptimistic

'BorrarFechasMedias
sqlborra2 = "DELETE FROM FECHASMedias"
db.Execute sqlborra2

'LlenarFechasMedias
sqlFechas = "INSERT INTO FECHASMedias SELECT DISTINCT fecha FROM MCHistorico ORDER BY fecha DESC"
db.Execute sqlFechas
.
.
.
.
rstFechasMedias.MoveFirst '....aqui falla otra vez!!!....
......................................................................................................................................................
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MoveFirst Falla!!!!!

Publicado por Christian (675 intervenciones) el 27/06/2005 18:54:15
Esto esta mal

rstFechasMedias.Open "INSERT INTO FECHASMedias SELECT DISTINCT fecha FROM MCHistorico ORDER BY fecha DESC", Conexion, adOpenStatic, adLockOptimistic

en los recordset se guardan datos de previas selecciones con el Select
ahi estas haciendo un INSERT lo cual no corresponde, puede ser q por ahi se este confundiendo.

Prueba esto:

rstFechasMedias.Open "SELECT DISTINCT fecha FROM MCHistorico ORDER BY fecha DESC", Conexion, adOpenStatic, adLockOptimistic

ejecuta este select para ver si te devuelve datos, prueba a ver q te sale.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Swap (12 intervenciones) el 27/06/2005 19:32:11
a ver, es que con las tablas que tienen un solo campo, puedes tener mucho mucho problemas.
dos consejos.
no utilices adodb, porque este objeto te controla a ti, no tu a él, utiliza simples grids y enlaces con la base de datos, piensa que de esta forma no tienes en pantalla la propia tabla, sino los datos que tu le pases.

cuando necesites tablas con un solo campo, añadele otro autonumerico aunque no lo utilices para nada, pero añadeselo, porque las tablas con un solo campo se marean, necesitan otro que haga una distincion clara entre los registros

espero te sirva de ayuda
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Ana Maria (72 intervenciones) el 27/06/2005 21:03:08
Muchas gracias a los 2, he hecho ambas cosas, he cambiado la forma de hacer la consulta, he quitado el INSERT y ademas he agregado un campo autonumerico a la tabla fecha y funciona.

Muchisimas Gracias.

...................................................

Por cierto no se si es una tonteria, pero porque cuando la fecha es 09/06/2005 .. o 08/06/2005 no la encuentra y si el dia no tiene un cero en el primer caracter como p.e. 25/01/2005 si la encuentra.

Gracias, gracia, gracias sois geniales-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Christian (675 intervenciones) el 27/06/2005 21:23:41
las fechas tienen q ir entre comillas simples

'25/01/2005'
'09/06/2005'
'08/06/2005'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Matías Freire (421 intervenciones) el 28/06/2005 06:08:42
NOOOOOO CHRISTIAN!!!!!!
Los campos de fecha van entre numerales (#).
Los campos del tipo string van entre comillas simples.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Anaasinco (72 intervenciones) el 28/06/2005 09:23:33
Efectivamente, así lo tengo:

sqlInserta = "INSERT INTO MediasMC SELECT codigo, descripcion, ultimo, fecha FROM MCHistorico WHERE (codigo ='" & codigoMC & "') AND (fecha=#" & fechamedia & "#)"

db.Execute sqlInserta

pero no se porque cuando le indico que busque 09/06/2005, o el 08/06/2005, e incluso el 10/06/2005 no lo encuentra y si existen.

Graacias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por Christian (675 intervenciones) el 28/06/2005 16:11:06
sea con comilla simple o # es igual Matias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MoveFirst Falla!!!!!

Publicado por AlbertoC (1 intervención) el 28/06/2005 17:51:46
Si trabajas con SQL van entre comillas simples y el formato depende de la configuracion del servidor por lo general es 'dd/MM/yyyy' y si es en access es #MM/dd/yyyy# si estas con access probablemente esta buscando la fecha al reves, intenta intercambiando el dia y el mes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar