Visual Basic Foro
Programación => Bases de Datos => Mensaje iniciado por: oscar en Septiembre 07, 2011, 02:27:07 pm
-
buenas tardes alguien me podria decir como hacer para utilizar un Between
tengo una fecha x un label cargada en el formload q pasa a esta fecha le resto 30 dias y me da una lo q denomine tope tengo un dtppicker q lo tengo con una fecha 2009 quiero q al pulsar buscar me busque todas las fechas comprendidas entre tope y mi dtppicker mi codigo es asi el dtppicker=text1
Adodc1.RecordSource = "select * from cliente WHERE vence Between tope.value and text1"
adodc1.refresch
DataGrid1.Refresh
me da un mensaje de error q el adodec esta mal puesto
-
Debia ser los controles fuera de las comillas dobles:
"select * from cliente WHERE vence Between " & tope.value & " and " & text1
Para que te evites problemas:
Dim Fecha1 as String
Dim Fecha2 as String
Fecha1 = Format(tope.value, "YYYY/MM/DD")
Fecha2 = Format(text1, "YYYY/MM/DD")
"select * from cliente WHERE vence Between '" & Fecha1 & "' and '" & Fecha2 & "'"
Y por ultimo, trata en lo posible de no usar el control ADODC.
-
OK MUCHAS GRACIAS MAS TARDE PRUEBO otra cosa amigo como o bueno dos priomiero como aria para mandar una señal por un puerto serial?
y segundo como aria para que un data grid trabaja perfectamente sin en al solo atravez de un modulo
yo hago la conexion de esta manera
Public CONEXIONBDD As New ADODB.Connection
CONEXIONBDD.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\bdgym.mdb;"
CONEXIONBDD.Open
pero como quiero compartir una carpeta donde esta todo y tengo los dtagrid con adodc con direcciones fijas no trabajan bien quiero resolver esto si me podrias ayudar
-
Ahorita alguien te va a responder sobre el ADODC, yo no puedo ayudarte mucho porque no trabajo con ADODC, es una forma arcaica de hacer las cosas y me causa escozor ver un ADODC :)
A que te refieres con "direcciones fijas"?, primera noticia para mi que los DataGrid no trabajan con lo que tu llamas "direcciones fijas".
Lo del puerto serial desconozco, mándalo al foro de VB6.
Sobre la conexión a la BD.
Creo que estas llevando el tema de la forma mas complicada. Es asi:
- Haz una sola conexion a la BD en un modulo.
- Haz tu consulta cuyo resultado lo tendrás en un recordset (rs)
- Vacia ese recordset en el control de tu preferencia: DataGrid, MSFlexGrid, DataCombo, ListBox, DataReport, etc
Es todo.
-
viejo bueno no soy muy ducho en bv6 yo le digo direccion fija a la ruta de acceso que se encuentra en una sola carpeta en el disco c si la carpeta esta en red no esta en el 1ruta que configure primeramente.
-
Considera no mencionarla así en un foro publico, porque si dices dirección fija a la carpeta en C, podria inferir que direccion variable es la que esta en red u otra cosa y es erróneo.
Sea para C o para la red usa la misma direccion que te dio fx700:
Data Source=\\192.168.0.101\carpeta_red\base_de_datos.mdb
El numero 192.168.0.101 lo cambiaras por el numero de la ip de tu PC donde se encuentra tu BD, la carpeta "carpeta_red" deberas compartirla (asumiendo que trabajas con Access)
En modulo declaras:
'---CONEXION bd ------
Public dB As ADODB.Connection
Luego En otro modulo (o el mismo) crearás la conexión en si (En tu caso que al parecer usas OLEDB):
Public sub Conecta()
Dim Ruta As String
Dim Cadena As String
Set dB = New ADODB.Connection
Ruta = "\\192.168.0.101\carpeta_red\bdgym.mdb"
Cadena = "Provider=microsoft.jet.oledb.4.0;data source=" & Ruta & ";User Id=admin;Password="
db.Open Cadena
(Si me equivoque en alguna linea por fa corrijanme)
Cuando abres tu Formulario principal o Sub Main, la primera linea que debe encontrar es:
Conecta
Ya veras si validas cuando la BD no se encuentre y para cuando te arroje error le des un mensaje "humano".
Luego abres un formulario X donde quieres llenar por ejemplo una lista de Socios a un Grid. Haces esto:
Dim rs As New ADODB.Recordset
sql= "Select * From Socios"
rs.Open sql, dB, 1, 1
Set Grid1.DataSource = rs
Y con eso te apareceran todos los registros de Socios en el grid. Si usas un DataGrid cambias el control.
No fue necesario el ADODC, si te vas a otro formulario lo invocas de igual forma.
Si quieres insertar un registro a la tabla de Socios haras:
sql = "Insert Into Socios(Campo1, Campo2, Campo3) values (" & Dato1 & ", " & Dato2 & ", " & Dato3 & ")"
dB.Execute sql, adCmdText
Espero te sirva.
Saludos
-
ok con lo de la direccion mañana me doy duro q de verdad vi el cod y tengo uns lapsos mañana me siento y veo.
con respecto a el Between
asi tengo el code del adodc y me dic q esta mal escrito?
"select * from cliente WHERE vence Between '" & fecha1 & "' and '" & Text1 & "'"
ya loas adodc me tienen !"·$%& voy a agarrar tu consejo es q empec con los adodc pa resolver xq no llevo mucho tiempo programando
este ejemplo lo modifique un poco pero me resulto de hacer la conexion en el mismo formulario
Dim conec As New ADODB.Connection
Dim StrSql As String
Dim sarchivobase As String ' creo una variable string para guardar el nombre del archivo
Dim rs As New ADODB.Recordset ' aca creo un recorset
Dim insert As Currency
sarchivobase = App.Path & "\bdgym.mdb" ' nombre del archivo
'sarchivobase = App.Path & "\Base de Datos\" & "bdgym.mdb" ' nombre del archivo
conec.Provider = "Microsoft.Jet.OLEDB.4.0" ' tipo de proveedor , en este caso access
conec.CursorLocation = adUseServer ' donde ejecuto la consulta en este caso elijo que se ejecute en el servidor
conec.ConnectionString = sarchivobase ' nombre dle archivo
conec.Mode = adModeReadWrite ' modo lectura escritura
conec.Open ' abro la conexion
rs.ActiveConnection = conec ' lo asocio a la conexion
rs.Source = "Select sum(monto)as suma from temporal3"
rs.Open 'abro el recorset
Text13 = rs!suma '
Text13.Visible = True
rs.Close
conec.Close
y sume todo lo que tenia en el campo monto y me dio un total de la tabla temporal
pero como ari pa conectar y mostrar en un data grid con un solo modulo?
yo siempre pongo un modulo
Public CONEXIONBDD As New ADODB.Connection
Public name As String
Public Sub Main()
CONEXIONBDD.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\bdgym.mdb;"
CONEXIONBDD.Open
Form10.Show
principal.Show
pero como aria para hacer una consulta y de una ves me cargue el data grid? sin un adodc??
me fui x otro lado es que tengo varias dudas el uso del Between y las otras dos lo de comprtir un programa en red y la del adodc si me pudieras ayudar un poco mas agradecido no respondo rapido xq trabajo en la carretera y siempre estoy rodando x hay y cuando llego es reventado y mi internet se conecta cuando le da la gana
-
tambien podria buscar todos los valores o fechas menores a la fecha tope esta la logia pero el codigo no me corre jeej
-
Como dijo Jack, vamos por partes.
1.-
asi tengo el code del adodc y me dic q esta mal escrito?
Te pediría que no lo interpretes, pon literalmente tal y como te sale el mensaje de error, no lo traduzcas, quizá algo se te paso.
2.-
Que bueno que pienses en abandonar el ADODC.
3.-
pero como ari pa conectar y mostrar en un data grid con un solo modulo?
Doc, esto si te respondí y muy detalladamente, esta mas arriba checalo bien. La respuesta 6 de este hilo.
4.-
Sobre el between publica el error.
No recuerdo lo de compartir un programa en red, supongo que debes compartir la carpeta donde esta alojado el programa.
Lo del ADODC no te puedo ayudar en nada referente a ese control.
-
a ok es q lei mal
este seria el cod
Dim rs As New ADODB.Recordset
sql= select * from cliente WHERE vence Between '" & Fecha1 & "' and '" & text1 & "'"
rs.Open sql, dB, 1, 1 (para que el 1,1)? ???
Set datagrid1.DataSource = rs
-
yo uso:
rs.Open sql, dB, 1, 1
en vez de poner:
rs.Open sql, dB, adOpenKeyset, adLockReadOnly
Que es lo mismo.
-
a ok es q lei mal
este seria el cod
Dim rs As New ADODB.Recordset
sql= select * from cliente WHERE vence Between '" & Fecha1 & "' and '" & text1 & "'"
rs.Open sql, dB, 1, 1 (para que el 1,1)? ???
Set datagrid1.DataSource = rs
el 1,1 son valores para los argumentos que acepta el recordset
el 1 equivale a poner adOpenKeyset en el tipo de recordset
y el otro 1 equivale al tipo de bloqueo adLockReadOnly
te recomiendo que leas la teoria de los recordset sino va a ser dificil que entiendas mas adelante.
este link es uno de los mejores explicados que vi y simple.
El Objeto Recordset (http://www.asptutor.com/asp/vart.asp?id=5)
saludos.
-
gracias a los dos