Visual Basic - CONSULTA DE SQL Aguien sabes sobre esto mucho...

Life is soft - evento anual de software empresarial
 
Vista:

CONSULTA DE SQL Aguien sabes sobre esto mucho...

Publicado por Rod (69 intervenciones) el 20/01/2002 18:07:28
Sabes tengo una consulta de datos para poder actualizar
y veer en una lista (ListBox) registros

y cuando elija uno de Los Registros existente permita mostrarme todos los campos disponibles

Puede hacer la conexion bien pero Haro tengo Otro Error
Que dice:
MICROSOFT(Controlador ODBC Microsoft Access) NO COINCIDEN LOS TIPOS DE DATOS EN LA EXPRESION DE CREITERIOS

no se que quiere decir , bueno tengo una idea pero ya revice todos los compos y la bese de datos y estan declarado bien.
AQUI ESTA EL CODIGO

Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.ConnectionString = "Dsn=basepro;"
cn.Open
Set mrs = New ADODB.Recordset
mrs.LockType = adLockOptimistic
mrs.CursorType = adOpenKeyset
End Sub

Private Sub CmdAñadir_Click()
Dim Consul As String
'abrir un recorset vacio
Consul = "select * " & _
"from tinven " & _
"where clave01= 0"


mrs.Source = Consul
Set mrs.ActiveConnection = cn
mrs.Open
mrs.AddNew

mrs.Fields("codigo") = txtCoo.Text
mrs.Fields("Unidad") = txtUnidad.Text
mrs.Fields("costo") = txtCosto.Text
mrs.Update
mrs.Close
cmdLista_Click
End Sub


Private Sub cmdLista_Click()
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Source = "select * " & _
"from Tinven " & _
"where codigo = 'clave01' " & _
"order by codigo,unidad,costo"
Set rs.ActiveConnection = cn
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:CONSULTA DE SQL Aguien sabes sobre esto mucho

Publicado por afogutu (321 intervenciones) el 21/01/2002 03:27:22
MIrá, probá esto.
Agregá estas funciones a un módulo común y corriente.
En las declaraciones del Módulo (General)
Public VGConn as ADODOB.Connection
Public RS as ADODB.Recordset

Function AbrirConexionADOAcces(Conexion as ADODB.Conection, Base as string)
'Esta es una conexión utilizando ADO de una base access
Set Conexión = New ADODB.Connection
Conexion.ConectionSting = "Provider=MIcrosoft.Jet.OLEDB.3.51; DataSource= '" & Base & "'" & _
"; User ID = 'Admin' ; Password = ''"

Conexion.ConectionTimeout = 0
Conexion.Open
End Function

Function ConectarRS(Conexion as ADODB.Conection, RS as ADODB.Recordset, SQL as String)

Set RS = New ADODB.Recordset
RS.CursorLocation = adUseClient
RS.Open SQL, Conexion, adOpenDynamic, adLockOptimistic
End Function

En el Load del Formulario pones lo siguiente

AbrirConexionADOAccess VGConn, "C:\proyecto\mibase.mdb"

'Donde Proyecto es el directorio y mibase.mdb es la base de datos

Cuando querés abrir un récordset ponés

ConectarRS VGCONN, RS, "SELECT......."

'Donde VGConn es tu conexión, RS es el Récorset que definimos y en Select pones tu select.

Para recorrer todos los registros de un recordset ponés

IF RS.Recordcount > 0 then
RS.MOVEFIRST
DO WHILE NOT RS.EOF
list1.additem RS.FIEDLS(0)
RS.Movenext
Loop
End IF

y Para recorrer todos los campos de un registro Usas
For I = 0 to RS.Fields.Count
List2.clear
List2.Ad
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:CONSULTA DE SQL Aguien sabes sobre esto mucho

Publicado por Javier Pérez (170 intervenciones) el 21/01/2002 10:56:38
Bueno, en vez de irnos por las ramas vayamos a lo concreto: la expresión

rs.Source = "select * " & _
"from Tinven " & _
"where codigo = 'clave01' " & _
"order by codigo,unidad,costo"

tiene toda la pinta de ser incorrecta; ¿qué es código y qué es clave01? Por una referencia anterior, clave01 parece ser el nombre de un campo de la base de datos, de tipo numérico, ya que antes aparecía en:

"select * from tinven where clave01= 0"

Si es así, entonces poner "where codigo = 'clave01' " es incorrecto. Vamos a ver como se debe expresar correctamente:

Como norma, (me remito a una respuesta anterior) hay que poner el dato de comparación entre comillas cuando el campo es de tipo texto:

"WHERE MiCampo = un_valor" -> si el campo es numérico
"WHERE MiCampo = 'un_valor'" -> si el campo es de texto

La cuestión se complica cuando el valor de comparación se obtiene a partir de una variable (o propiedad de un control). Supongamos que tenemos una caja de texto llamada Texto de la que queremos extraer el dato; entonces deberemos poner:

"WHERE MiCampo = " & Texto.Text -> si el campo es numérico
"WHERE MiCampo = '" & Texto.Text & "'" -> si el campo es de texto

Observa que en el caso de campos de texto es necesario incluír las comillas simples rodeando el valor del texto. Así que revisa las expresiones SELECT y comprueba en que caso o casos no has tenido en cuenta estos aspectos.
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 Para javier

Publicado por Rod (69 intervenciones) el 21/01/2002 18:27:10
Javier Clave01
Es el indece de la base da datos
asi me enseñaron

Espero que sea correcto que debo utilizar el indece asi
que dices tú

Gracias

Rod
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