Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Visual Basic Y Sql Server (http://www.forosdelweb.com/f69/visual-basic-sql-server-398576/)

el mago de oz 31/05/2006 20:35

Visual Basic Y Sql Server
 
hola amigos, mi pregunta es la siguiente y necesito opiniones:

tengo una bd en access que la importe desde sql server (todo perfecto),
cambie la conexion de mi programa y me permite conectarme a sql server y todo, el problema es que las tablas inician el nombre con numeros, es decir, por ejemplo:
00_clientes
01_servicios, etc.
y cuando intento abrir la tabla desde VB6 me sale un error de sintaxis cerca de 00_usuarios, por ejemplo, y al cambiare el nombre de la tabla (usuarios) me permite el paso... por lo tanto podriamos decir que al conectarnos a sql server no se puede tener tablas que el nombre empiece con numeros (no asi con access), ¿es cierto esto?, o a lo mejor hay que poner algun caracter antes...??? la verdad no se, como es una gran cantidad de tablas y consultas no quisiera tener que empezar a cambiar los nombres de las mismas y volver a desarrollar las consultas...en definitiva ¿que puedo hacer para que la conexion me permita abrir las tablas de sl server aunque los nombres de ésta empiecen con numeros?

ahhhh, y ademas cual seria el codigo o la forma para determinar primero si el servidor esta funcionando antes de conectar y no se pegue el programa??????

gracias...

el mago de oz 07/06/2006 15:20

uuuuf, nadie tiene ni la mas minima opinion al respecto...?????
mmm...

Developer9 07/06/2006 15:24

te puede servir algo como: SELECT * FROM [00_clientes] WHERE ...

Developer9 07/06/2006 15:28

Para que no se "apague" el programa debes de poner un ON ERRO GO TO... esta es mi funcion para abrir la conexion a la base:

Public Sub abre_conexion()

On Error GoTo ERROR:
Set conexion = New ADODB.Connection
conexion.Open "dsn"
ERROR:
If Err.Number <> 0 Then
MsgBox Err.Description, vbCritical
End If

End Sub

el mago de oz 07/06/2006 15:48

gracias....
 
se me habia ocurrido cualquier caracter menos ese, voy a probar y si resulta te lo agradezco....

nois vemos....

Developer9 07/06/2006 15:50

No conozco una manera de solo "preguntar" desde visual basic si el servicio de SQL Server está arriba

el mago de oz 07/06/2006 16:05

en el fondo mi idea era esa justamente, explicar la forma de detectar si el servidor esta detenido o no... aunque el codigo que pusiste, creo, se quedara pegado ya que el problema que tengo es justamente al abrir la conexion donde se queda pegado y no da mensajes de error ni nada, pero de todos modos voy a probar ...
gracias.

Developer9 07/06/2006 17:59

Lo que el codigo hace es al haber un error (de cualquier tipo) se salta a la linea ERROR, y Err.Description va a contener el error, allí te va a salir algo como El Servidor SQL Server no existe o acceso denegado.

Esto no sirve solo para eso, lo deberías poner en todas tus funciones, ya que si en ejecucion tu .exe se cae se cierra el programa, en cambio lo que aqui hace es controlar cualquier error

el mago de oz 11/06/2006 16:47

perfecto...
 
mira, ahora tengo otra preguntita, la verdad es que estaba acostumbrado a trabajar solo en access y he tenido que hacer unas modificaciones (de codigo) para hacerlo en sql server y he tenido problemas y ademas corto de tiempo...
para buscar entre fechas en Sql server como debo hacerlo (sintaxis) ya que he modificado pero nada...
por ejemplo yo buscaba entre dos fechas en access de esta forma:

rst.open "Select * from servicios between fecha=#" & fecha1 &"# and =#" & fecha2 &"#"",oconn1 (mas o menos)

como traduzco esto para sql server???

p.d. mi campo es DATETIME

gracias...

Developer9 12/06/2006 18:07

Debes de quitarle las '#'

Fabuazul 13/06/2006 10:49

Y sustituirlas por apostrofe ( ' ).

Así está tu consulta:

=#" & fecha1 &"#

y deber ser de esta manera:

='" & fecha1 &"'

jericosoft 13/06/2006 13:55

Crea un DSN de sql que se conecte a tu base

luego en tu form pon un DATA Control

Conectalo con :

ControlData.DatabaseName="PROVIDER=MSDASQL;dsn=Nom breDSN;uid=;pwd=;"
ControlData.Refresh

con eso tienes acceso a todas tus tablas , tengan el nombre que sea

Ademas de que si el servidor sql no esta activo te manda un error que puedes manejar facilmente.


Accede a tus datos asi :

ControlData.RecordSource = "select dato1,dato2,dato3 from 01-clientes where dato1 = 1 and dato2 = " & Chr$(39) & Text1 & Chr$(39)
ControlData.Refresh


Para seleccionar fechas haz arreglos con dos DTPICKER que el usuario selecciona :

sfecha = ""
Dfecha = Mid$(DTP1.Value, 7, 4) & "-" & Mid$(DTP1.Value, 4, 2) & "-" & Mid$(DTP1.Value, 1, 2) & " 00:00:00.000"
afecha = Mid$(DTP2.Value, 7, 4) & "-" & Mid$(DTP2.Value, 4, 2) & "-" & Mid$(DTP2.Value, 1, 2) & " 00:00:00.000"
sfecha = "Between {ts '" & Dfecha & "'} and {ts '" & afecha & "'}"

ControlData.RecordSource = "select dato1,dato2,dato3 from 00-servicios where dato1 = 1.00 and fechaentrega " & sfecha & " order by dato2, fechaentrega asc"
ControlData.Refresh


Espero te sirva la idea

Developer9 13/06/2006 17:59

Cita:

Iniciado por Fabuazul
Y sustituirlas por apostrofe ( ' ).

Así está tu consulta:

=#" & fecha1 &"#

y deber ser de esta manera:

='" & fecha1 &"'

Orale! Gracias Fabulinda :-) supuse que en su codigo si tenía la comilla simple

Eso es algo que no me gusta de Access, que si te cambias a SQL Server y trabajas con fechas tienes que cambiar el código. Por cierto, Access es muy malo para las fechas, me pasaba que hacía un select entre un rango de fechas que sabía que si arrojaba resultados y no arrojaba nada y hace tiempo pude ver algunos usuarios preguntando que le pasaba a sus selects similares en que se filtraba por fecha :-(

el mago de oz 13/06/2006 21:10

excelente...pero
 
tenian razon, bastaba reemplazar ' por # y listo...
el pero que tengo ahora es detectar el estado del servidor de sql server ya que no puedo detectar cuando esta detenido...
yo me conecto asi:

dim connect as new adodb.connection

y luego

With oconn1
.ConnectionString = "uid=;pwd=;driver={SQL Server};server=USUARIO-407C33C;database=usuarios1;dsn=''"
.Open
End With

pero se pega aun con el codigo que me diste Developer... pero imagino que tendre que detectar antes del ".open" si la conexion se realizo...
cualquier sugerencia la agradezco...

gracias de todos modos....


La zona horaria es GMT -6. Ahora son las 08:27.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.