![]() |
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... |
uuuuf, nadie tiene ni la mas minima opinion al respecto...????? mmm... |
te puede servir algo como: SELECT * FROM [00_clientes] WHERE ... |
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 |
gracias.... se me habia ocurrido cualquier caracter menos ese, voy a probar y si resulta te lo agradezco.... nois vemos.... |
No conozco una manera de solo "preguntar" desde visual basic si el servicio de SQL Server está arriba |
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. |
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 |
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... |
Debes de quitarle las '#' |
Y sustituirlas por apostrofe ( ' ). Así está tu consulta: =#" & fecha1 &"# y deber ser de esta manera: ='" & fecha1 &"' |
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 |
Cita:
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 :-( |
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.