Autor Tema: Between  (Leído 6929 veces)

0 Usuarios y 1 Visitante están viendo este tema.

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Between
« 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

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Between
« Respuesta #1 en: Septiembre 07, 2011, 02:43:40 pm »
Debia ser los controles fuera de las comillas dobles:
"select * from cliente WHERE  vence Between " & tope.value  & " and  " & text1

Para que te evites problemas:
Código: [Seleccionar]
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.
Me encuentras en YAcosta.com

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #2 en: Septiembre 12, 2011, 05:06:20 pm »
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

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Between
« Respuesta #3 en: Septiembre 12, 2011, 07:36:03 pm »
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.
Me encuentras en YAcosta.com

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #4 en: Septiembre 12, 2011, 08:56:00 pm »
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.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Between
« Respuesta #5 en: Septiembre 12, 2011, 10:15:30 pm »
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:
Código: [Seleccionar]
'---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):

Código: [Seleccionar]
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:

Código: [Seleccionar]
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:
Código: [Seleccionar]
sql = "Insert Into Socios(Campo1, Campo2, Campo3) values (" & Dato1 & ", " & Dato2 & ", " & Dato3 & ")"
dB.Execute sql, adCmdText

Espero te sirva.

Saludos
« última modificación: Septiembre 12, 2011, 10:17:32 pm por YAcosta »
Me encuentras en YAcosta.com

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #6 en: Septiembre 17, 2011, 12:15:54 am »
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

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #7 en: Septiembre 17, 2011, 12:20:15 am »
tambien podria buscar todos los valores o fechas menores a la fecha tope esta la logia pero el codigo no me corre jeej

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Between
« Respuesta #8 en: Septiembre 17, 2011, 12:32:29 am »
Como dijo Jack, vamos por partes.
1.-
Citar
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.-
Citar
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.

Me encuentras en YAcosta.com

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #9 en: Septiembre 17, 2011, 12:38:31 am »
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


YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Between
« Respuesta #10 en: Septiembre 17, 2011, 12:43:38 am »
yo uso:
rs.Open sql, dB, 1, 1 

en vez de poner:
rs.Open sql, dB, adOpenKeyset, adLockReadOnly

Que es lo mismo.
« última modificación: Septiembre 17, 2011, 12:50:29 am por YAcosta »
Me encuentras en YAcosta.com

seba123neo

  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Between
« Respuesta #11 en: Septiembre 17, 2011, 12:47:37 am »
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

saludos.

oscar

  • Bytes
  • *
  • Mensajes: 14
  • Reputación: +0/-0
    • Ver Perfil
Re:Between
« Respuesta #12 en: Septiembre 17, 2011, 01:20:56 am »
gracias a los dos