PDA

Ver la Versión Completa : conexión con sqlserver


gerly
17-08-2003, 17:31:15
Saludos a todos
Necesito ayuda porque estoy haciendo una aplicación en Delphi que debe acceder a una base de datos en un servidor sql y es primera vez que utilizo bases de datos cliente-servidor. Hice una muy pequeñita para probar. La base de datos tiene una sola tabla con tres campos. Noticia, fecha y autor. Y la aplicación solo se encarga de editar las noticias y permite agregar una nueva. La base de datos la hice el en database desktop. Utilicé un ttable con un datasource.
En mi máquina todo funciona bien. Luego hice un instalador y traté de ponerla en otra máquina pero no funciona. No se conecta con la base de datos. El odbc y el alias están bien. Pienso que tal vez debería usar un sqlconection pero no sé como usarlo.
Disculpen tanta lata.
:confused:

Gerly Valdés

guillotmarc
18-08-2003, 18:33:30
Hola.

El problema de utilizar el componente TTable, es que usa el motor BDE de Borland, el cual hay que instalar en las maquinas para que la aplicación funcione.

Los componentes más aconsejables para acceder a SQL Server són los ADO (disponibles en Delphi 5, 6 y 7). Al utilizar el motor ADO, que ya está disponible por defecto en las ultimas versiones de Windows, no hay que instalar ningun motor de datos para que la aplicación funcione correctamente. (Además ADO es el cliente nativo de SQL Server recomendado por Microsoft).

Saludos.

gerly
22-08-2003, 17:23:33
Muchas gracias por tu respuesta. Ya probé con Ado y pasé algo de trabajo pero al final resultó.
Ahora me hace falta otra cosa. Tengo una lista de records en un dbgrid y quisiera que aparecieran ordenados según uno de los campos. El apellido en este caso. Supongo que debe ser algo trivial pero no lo encuentro. :rolleyes:
Realmente este sitio es una tabla de salvación.
Muchísimas gracias de nuevo.
chao

guillotmarc
23-08-2003, 16:41:33
Hola.

Tienes varias opciones.

A) Que sea la Grid la que ordene los datos. Personalmente utilizo las QuantumGrid que són muy potentes, pero són de pago. Puedes usar la TExDbGrid, http://www.clubdelphi.com/componentes/index.php?dcategory=Grids&sortby= Que creo que también permite ordenar por columnas.

B) Poner una clausula ORDER BY en la consulta, al cargar los datos.

Saludos.

gerly
24-08-2003, 15:15:57
Hola
De nuevo muchas gracias. Finalmente lo hice con el order by. :) Tengo otra pregunta, que aunque no es de este tema, la voy a poner aquí de todos modos.
Qué puedo hacer para obtener el mes de un campo tipo datetime?
saludos

guillotmarc
24-08-2003, 18:03:11
Hola.

Usa la función MONTH de SQL Server.

Ejplo. : select MONTH(Campo) as Mes from Tabla

Saludos.

gerly
25-08-2003, 22:57:01
:)
De nuevo muy útil tu respuesta y de nuevo muchas gracias. Pero como sigo tratando de enterarme de cómo funciona este rollo de las bases de datos sql ya tengo otra pregunta. Cómo se pueden definir campos llave en una tabla.
En general, cómo crear las tablas, porque en el database desktop me resulta bastante incómodo. Sé que está la consola de administración de sql server pero no he metido mis manos ahí todavía. Es mejor crear allí las bases de datos?
A la base de datos que yo creé para probar en el database desktop le puse un campo que para mí es llave porque lo manejo durante la ejecusión y guardo el último por donde me quedé para seguir incrementando pero me imagino que debe haber un modo más fácil.
:rolleyes:
muchos saludos

guillotmarc
25-08-2003, 23:13:28
Hola.

En efecto, el Enterprise Manager de SQL Server es mucho más cómodo para administrar la base de datos, que el database desktop. (Y sobre todo más completo, puesto que hay cosas que no podrás hacer en el database desktop : triggers, ...)

Aunque personalmente, el entorno que prefiero para administrar una base de datos SQL Server, es el Microsoft Access 2000.

Saludos.

gerly
26-08-2003, 14:16:24
He hecho algunas cosas en access y es realmente muy cómodo pero no se me había ocurrido que se pudiera crear desde allí la base de datos de sql server. Ya estuve mirando más o menos cómo se hace, luego te contaré cómo me va.
Quiero aprovechar para preguntarte por los quickreports, porque ayer descubrí que ya no están en delphi 7 y en la aplicación que me estoy preparando para hacer tengo que hacer una planilla que debe imprimir el usuario y que tiene siempre el mismo formato. En Delphi 5 eso lo resolvía con Quick report pero ahora no sabría cómo hacerlo.
Discúlpame por el ejecu"s"ión de ayer, no sé cómo se me fue.
Ah! y mil gracias de nuevo.

guillotmarc
26-08-2003, 18:12:53
Hola.

Posteado originalmente por gerly
Discúlpame por el ejecu"s"ión de ayer, no sé cómo se me fue.


La verdad es que no se a que te refieres, no veo nada en tus mensajes a disculpar :).

Las QuickReports si que están en Delphi 7, pero no se instalan por defecto, hay que hacerlo manualmente una vez instalado Delphi. Si usas la opción de buscar en el Foro de Impresión, encontrarás algunas indicaciones sobre como hacerlo.

Saludos.

gerly
26-08-2003, 20:43:13
Sí pues. Ya tengo los Quick Reports. Pesados ellos, pero ya los he trabajado antes.
Como siempre miles de gracias.
Lo de la ejecu"s"ión, me refería a que es con c. Igual te agradezco la amabilidad de decir que no hay nada que disculpar en mis mensjaes. ;)
Ahora para no perder el tiempo voy a aprovechar para preguntar algo más:
Cómo puedo regular los usuarios que pueden conectarse a la base de datos? Tengo la base de datos en un servidor con win NT4. Le dije que tomara la autentificación de winNT. Pero creo que ahora, tal y como están las cosas, cualquiera puede acceder a la base de datos con la aplicación que estoy haciendo. Cómo puedo especificar qué usuarios del dominio tienen permiso y cuáles no?
chao
Hasta la próxima.

zeta2
19-12-2007, 22:14:42
Me parece que eso ya es un tema de permisos del administrador. El admin debería dar permiso a la terminal que usará o modificará esa base de datos, en este caso, el archivo .db o .dbf debería ser compartido y el administrador, desde el servidor otorgar los permisos a quien corresponda...

Es lo me parece no, igual no conozco el uso de base de datos en una red la cual me motivaron para investigar... XD Si me entero de algo mas posteo.

Atte. Marco.