Visual Basic - Ultimo dato ingresado

Life is soft - evento anual de software empresarial
 
Vista:

Ultimo dato ingresado

Publicado por Edu (6 intervenciones) el 03/05/2006 20:46:48
Hola a todos, este es mi problema.
Estoy trabajando con vb6 y sql 7... tengo una tabla PEDIDOS y quiero hacer una consulta para saber cual es el ultimo pedido ingresado y guardarlo en una variable, yo hago lo siguiente.

dim conexion as ADODB.connection
dim recor as ADODB.recordset

recor.Open "select max(num_pedido) from pedido", conexion

dim NumeroPedido as Long

NumeroPedido=recor

Esto me da un error, y he probado de varias formas y sigo con el mismo problema, espero que alguien pueda ayudarme. Muchas Gracias
Eduardo de Cordoba, Argentina
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:Ultimo dato ingresado

Publicado por Jordi (4 intervenciones) el 03/05/2006 21:08:17
Buenas,
y si nos dices que error te da y tal...?
la conexion solo la declaras, deduzco que no ha puesto todo el codigo o te falta abrir la conexion, dandole la ruta .... de la base de datos.

Un saludo desde Barna
sk@keo
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:Ultimo dato ingresado

Publicado por Matias freire (421 intervenciones) el 03/05/2006 21:21:57
Eduardo...

tu problema está en que le estás asignando a una variable del tipo long un objeto del tipo recordset. es por eso que te da el error (esto suponiendo que cuando escribiste este mensaje te ahorraste de escribir la cadena de conexion y la sentencia en la que te conectas, si lo que intentas hacer en tu programa es tal cual lo que escribiste, lee lo de más abajo junto con el ejemplo)

El objeto recordset en realidad lo que te devuelve es un conjunto de registros, y cada registro tiene un conjunto (coleccion) de campos llamado FIelds. Cabe destacar que cuando ejecutas una consulta SQL, ADO se posiciona automáticamente sobre el primer registro que haya devuelto la consulta (siempre y cuando tenga registros). Para tu caso particular, la consulta SQL te devolverá un sólo registro con un sólo campo, el cual contendrá el valor que estás consultando. Por lo tanto, sólo tendrás que consultar el valor de dicho campo de la siguiente manera

Private sub ObtenerNumeroPedido()
dim NumeroPedido as Long
dim conexion as ADODB.connection
dim recor as ADODB.recordset

set conexion = New ADODB.Connection
conexion.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ElNombreDeTuBase;Data Source=ElNombreDelServidorSQL"

conexion.Open

set recor = new ADODB.recordset

recor.Open "select max(num_pedido) from pedido", conexion

NumeroPedido = recor.Fields(0).Value

End Sub

Como viste, el objeto recordset tiene una propiedad "Fields" que no es más que una colección de campos, a los cuales puedes acceder por el indice (en este caso como es el unico campo es el cero) o bien puedes acceder por el nombre del campo, colocándolo entre comillas dentro del paréntesis. Si el SQL lo hubieses armado de la siguiente forma:

"SELECT MAX(num_pedido) AS numero_de_pedido FROM pedido"

podrías haber usado lo siguiente:

NumeroPedido = recor.Fields("numero_de_pedido").value

y funcionaría igual. Espero que todo esto te haya servido de algo. Saludos!!!!
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:Ultimo dato ingresado

Publicado por Luis Manuel Tejada Garcia (8 intervenciones) el 03/05/2006 21:27:27
TIENE RAZON...!!!1

Te falta algo de codigo y creo que la parte mas importante que es la conexion a la base de datos y el strinq mediante el cual haces la conexion a la misma.
EL EJEMPLO SERIA MAS O MENOS ASI:

**Modulo**-
***Optione Eplicit** Puedes ponerlo en cualquiera de los 2
Public cn As Connection
Public recor As Recordset

Set cn = New conexion
cn.CursorLocation = adUseClient
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\directorio \BD;Mode=ReadWrite;Persist Security Info=False" (este seria el string para la conexxion a la BD)

*******y por ultimo tu codigo********
set record = new recordset
recor.Open "--sentencia SQL--", cn, adOpenDynamic, adLockOptimistic

maso menos asi seria, al cuestion.

Prueba y continua a ver si llegas

Esepro que te Sirvan de algo

Saludos desde LA REPUBLICA DOMINICANA
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