Embarcadero

Autor Tema: [RESUELTO] Pasos para conectar una BD SQL server 2005 a Delphi 7 y modificarla  (Leído 5399 veces)

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

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
saludos

Necesito conectar una BD SQL server 2005 express a Delphi 7 y modificarla desde el mismo delphi. necesito manejar esa base de datos que tienes varias tablas.

En realidad ya la tengo conectada con la herramienta ADO, pero me falta emplear los demas componentes que me permitan modificarla, crear nuevos registros y todas esas funciones.
« Última Modificación: 28 de octubre de 2010, 12:42:57 por eduarcol »

Comunidad Delphiaccess


Desconectado Delphius

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 219
  • -Tu has recibido: 337
  • Mensajes: 4,442
  • Calificaciones: +381/-2
  • Sexo: Masculino
  • ¿El polimorfismo seguirá siendo parte de mi vida?
Hola Isedr,
Bienvenid@ a DelphiAccess.  :)

¿Cuando dices que quieres modificar la base de datos te refieres a ingresar registros en sus tablas, eliminar otros, y/o modificarlos? Es decir ¿la típica acción sobre cualquier tabla: INSERTAR, MODIFICAR, ELIMINAR o el conocido ABM?

Si la respuesta es afirmativa puedes hacerlo con los componentes ADOTable y ADOQuery. Con ADOTable puedes acceder a una tabla de la base de datos, mientras que con ADOQuery puedes lanzar instrucciones SQL y es más flexible y recomendable.

Ambos componentes tienen una propiedad FieldByName() y Fields[] mediante estas propiedades es que se puede hacer una lectura de los campos e incluso modificarlos. Cualquier operación afectará al registro "seleccionado" o mejor dicho donde esté el cursor de la base de datos en ese momento.

Con FieldByName() se puede acceder a un campo por su nombre, mientras que con Fields[] accedemos por su posición. Por ejemplo:

Código DELPHI
  1. ADOTable1.FieldByName('NombreCampo') // por nombre
  2. ADOQuery1.Fields[5] // por posición: el 6to registro. Está basado en 0..Count - 1

Ahora bien, para poder operar con los registros es necesario tener en cuenta el estado en que se encuentra nuestro DataSet (ADOTable, ADOQuery son ejemplos de DataSet). Para poder insertar un registro es necesario cambiar el estado a "en modo de inserción" y esto se consigue mediante el método Insert, con Append lo ponemos en modo de edición y nos permite modificar el registro activo. Luego para confirmar la acción se hace uso de Post, de Cancel para cancelarlo.

En el libro de la Cara Oculta de Delphi 4 de Ian Marteens, que puede descargarse desde muchos sitios y está escrito en español, puedes ver un diagrama de estados que representa esto.

Además puedes desplazarte por los registros mediante First, Last, Next, Prior.

Con ADOQuery uno puede trabajar con mayor flexibilidad como decía, gracias a que en su propiedad SQL se puede añadir complejas sentencias INSERT, UPDATE, DELETE, SELECT, etc. Naturalmente, el uso y acceso a los registros en un TADOQuery sólo tiene sentido cuando se usa una instrucción SQL SELECT.

La lectura de dicho libro, y el material que tenemos disponible en la sección Manuales, Tutoriales, y a lo largo del todo foro te puede ser de mucha ayuda. No temas ir preguntando tus dudas, y a presionar F1.

Ahora bien, si tu duda pasa por agregar, eliminar o modificar tablas a través de Delphi eso es otro cantar. Te agradecería que seas más precis@ en tus escritos.

Saludos,
Como redactar mensajes - Uso de etiquetas

Se enseña por amor a los demás, se aprende por amor a la verdad
Cuanto más se busca la verdad, sin llegar a la perfección, anhelamos saber lo que falta

San Agustín

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
Si, gracias

Tenes razón. Me refiero a que ya tengo la BD y tengo dos tablas (Cliente y Equipo).
Pues estoy desarrollando un pequeño software con el cual pueda guardar los datos de los clientes y los equipos que estos traen a reparar al taller, y quiero que toda esa info me quede guardada.

Pues te agradesco la ayuda. Lo que quiero saber es como conectarme a la BD desde delphi ya que solo he logrado conectarme con el ADOConnection solo en una BD de Acces, pero al que quiero es a SQL Server 2005 express, el cual estoy estudiando un tutorial.

Entonces quiero conectarme a las BD de SQL desde el soft que desarrollo en Delphi 7, y quiero insertar nuevos registros, borrar, etc. Este soft lo desarrolle con tablas Paradox 7, pero lo quiero hacer ahora con SQL pues creo que es mas potente.

Quisiera que me ayudes en este soft. Ya tengo la BD creada y las tablas correspondientes creadas en el directorio por defecto de SQL.

Cuales componentes utilizo, de tal manera que no tenga que escribir tantas instrucciones SQL, solo las necesarias.

Desconectado Delphius

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 219
  • -Tu has recibido: 337
  • Mensajes: 4,442
  • Calificaciones: +381/-2
  • Sexo: Masculino
  • ¿El polimorfismo seguirá siendo parte de mi vida?
Hola lsedr,
Disculpa que responda después de unas cuantas horas, estoy un tanto falto de tiempo.

Primeramente tengo que confesarte que desde hace tiempo que no uso MS SQL Server aunque en el tema de conexión con ADO no ha cambiado en absoluto.

Los pasos son:
1. Poner un ADOConection el el form o DataModule. Haz doble clic en él.
Debería de aparecer un cuadro de diálogo pidiendo que selecciones entre indicar un data link o por medio de conection string.

2. Selecciona esta última opción (conection string) y presiona en Build.
Te aparece una ventana en donde te permite elegir el proveedor de datos. De esa lista debería haber uno que dice "Microsoft OLE DB Provider for SQL Server". Seleccionalo y luego haz clic en siguiente.

3. Ahora estás en la otra pestaña. Allí debes indicar el nombre del servidor, el nombre de usuario y contraseña, y por último debes indicar la base de datos en cuestión.

4. Prueba la conexión y en caso de operación exitosa acepta.

¡Listo! ya tienes establecida la conexión a la base de datos.

Luego puedes emplear, como he dicho antes, los componentes TADOTable y/o TADOQuery.
Vamos primero por lo más fácil: TADOTable, coloca uno, y seleccionalo.

Notarás que en el inspector de objetos te muestra un listado de sus propiedades y eventos. Entre sus propiedades hay una con nombre Connection. En ella debes indicar el ADOConnection. Listo, ya tienes vinculado el Table con el componente de conexión. Ahora debes indicar la tabla a la que se vinculará: ve a la propiedad TableName y selecciona la tabla en cuestión. Es posible que te pida que inicies sesión con el nombre de usuario y contraseña, hazlo.
Listo. Ya tienes todo establecido.

Como te contaba, el ADOTable (como también el TADOQuery) tiene las propiedad Fields y FieldByName para acceder a los registros. Antes de hacer alguna operación en ellos hay que asegurarse de que el componente esté en el estado correcto, de otro modo obtendremos una excepción (aviso de error informando que el dataset no se encuentre en el modo en cuestión). Por ejemplo, si se desea insertar un nuevo registro:

ADOTable1.Insert; // ponemos el estado a "inserción"
ADOTable1.Fields[0].Value := algo; //  pasamos el dato al campo de posición 0
...
ADOTable1.Post; // confirmamos

Recuerda que también se puede acceder a los campos por su nombre:

Código DELPHI
  1. ADOTable1.Insert;
  2. ADOTable1.FieldByName('Codigo').AsInteger := 12345;
  3. ADOTable1.Post;

Ahora vamos por el componente ADOQuery. El procedimiento es similar, debes vincularlo con el ADOConnection. Una vez hecho esto puedes emplear la propiedad SQL para generar y/o escribir las sentencias SQL que desees.

En tiempo de ejecución basta con hacer clic en ... de la propiedad SQL para que te aparezca la ventana en donde puedes escribir la sentencia. Por código se hace así:

Código DELPHI
  1. ADOQuery1.SQL.Text := 'INSERT INTO ....';

O también se puede "partir" en líneas:

Código DELPHI
  1. ADOQuery1.SQL.Add('SELECT ...');
  2. ADOQuery1.SQL.Add('FROM ... ');
  3. ADOQuery1.SQL.Add('WHERE... ');

Dependiendo de las instrucciones se hará uso de Open (para las SELECT) o de ExeqSQL (para INSERT, UPDATE, etc) para ejecutarlas.

Cuando se ejecuta un SELECT en el ADOQuery tendremos los datos de dicha consulta. El acceso a los registros se hace igual que en un ADOTable:

Código DELPHI
  1. Edit1.Text := ADOQuery1.FieldByName('Nombre').AsString;

En el ejemplo se lee del registro activo el campo Nombre y se pasa el contenido de éste en formato string a un Edit que tengamos.

Ahora bien, con este estilo de trabajo se lleva a cabo todo accediendo en forma directa a los componentes. Hay otras maneras que suelen ser atractivas y sencillas y hasta que no requieren casi nada de código. Delphi provee de componentes data-ware que facilitan los ABM.

Ve a la pestaña Data Access y "pega" un DataSource en el Form o DataModule. En su propiedad DataSet puedes elegir cualquier DataSet... ADOQuery, ADOTable, entre otros. Luego ve a la pestaña Data Controls... allí tienes una amplia variedad de componentes... todos especializados y diseñados para conectarse con base de datos y facilitar el ingreso, modificación y visualización de los datos.

Pon un DBGrid y un DBNavigator como para ilustrar el proceso. Estos componentes, y el resto de los de la pestaña, tienen una propiedad DataSource... en ella indica el DataSource que pegaste.

Con ello acabas de configurar todo... desde una conexión hasta los controles que mostrarán los datos.

Creo que he dado una buena orientación de como puedes encararlo por tus medios. Lo que he expresado aquí no es nada nuevo que no se haya dicho y consultado en los foros.
Como he dicho antes en los foros que encontrarás en DelphiAccess hay manuales, tutoriales, ejemplos, y más material de consulta. La lectura al libro de "La Cara Oculta" no tiene desperdicio.

Si tienes dudas, ya sabes. Aquí estaremos.

Saludos,
Como redactar mensajes - Uso de etiquetas

Se enseña por amor a los demás, se aprende por amor a la verdad
Cuanto más se busca la verdad, sin llegar a la perfección, anhelamos saber lo que falta

San Agustín

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
Un millon de gracias hermano. seguire desarrollando el software como novato que soy. estare probando todo lo que me haz indicado. esta todo muy claro. GRACIAS MIL.

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
Ahora tengo un problemita. Hice todo como me decis pero el DBGrid no muestra la tabla ni tampoco el DBNavigator funciona.

el ADOConnection se conecta bien dice que hay coneccion cuando le doy a probar coneccion.
La tabla ya le entre datos en los registros desde el mismo SQL

que estara pasando entonces que no se ve la tabla en el DBGrid ????

Desconectado Rolphy Reyes

  • Moderadores
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 227
  • -Tu has recibido: 300
  • Mensajes: 1,952
  • Calificaciones: +322/-0
  • Sexo: Masculino
  • TRolphyReyes = Class(TBaseModerador)
Saludos.

Pusiste el componente TDataSource?

Nota: Si el hilo "original" ya fue solucionado es recomendable ponerle la etiqueta de [RESUELTO] y crear un nuevo hilo con la inquietud naciente; así es más fácil darle seguimiento.
Lo único predecible en la vida es lo impredecible!

Si encontró útil este Mensaje utilice el Botón de Gracias.

¿Cómo postear correctamente?

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
claro, si puse el datasource pero no funciona la DBgrid

Conectado Fenareth

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 43
  • -Tu has recibido: 130
  • Mensajes: 2,999
  • Calificaciones: +158/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
claro, si puse el datasource pero no funciona la DBgrid

Ok... En la propiedad DataSet del componente TDataSource qué valor colocaste amigo ???...

Y en la propiedad DataSource del DBGrid ???

Saludox ! :)
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado egostar

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 1194
  • -Tu has recibido: 651
  • Mensajes: 10,417
  • Calificaciones: +726/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
claro, si puse el datasource pero no funciona la DBgrid

Puedes subir una imagen de tu IDE para ver como que es lo que tienes y también el código que utilizas para saber con más exactitud tu problema ¿?

Salud OS

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
En la propiedad Dataset del Datasource1 puse el ADOtable1.

En la propiedad DataSource del DBgrid1 puse Datasource1.

Y en la propiedad Connection del ADOTable1 coloque ADOconnection1

Utilise entonces un ADOconnection para conectarme a la BD SQL server 2005 express, la conexion la probe y dice que es satisfactoria.

pero no se ve la tabla en el DBgrid.

Otro detalle es que no le puse contraseña al SQL y cuando corro el programa el ADOconnection pide la contraseña pero no le puse ninguna al SQL y pues doy clic en aceptar.

sera por estar sin contraseña que no se visualiza la tabla en el DBGRID ?????


« Última Modificación: 27 de octubre de 2010, 10:40:37 por lsedr »

Conectado enecumene

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 361
  • -Tu has recibido: 305
  • Mensajes: 5,696
  • Calificaciones: +367/-1
  • Sexo: Masculino
  • DA Webmaster
En el ADOCOnnection debes poner la propiedad LoginPrompt en False para evitar eso, y activaste el Dataset??

Código DELPHI
  1. ADOTable1.Active := True //Opcion 1
  2. ADOTable1.Open; //Opcion 2

Saludos.

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
gracias hermano esa era la solucion, activarlo

Desconectado egostar

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 1194
  • -Tu has recibido: 651
  • Mensajes: 10,417
  • Calificaciones: +726/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
gracias hermano esa era la solucion, activarlo

Vaya, pues que bien, pequeño olvido :D :D :D

He ahí la importancia de la descripción completa de una pregunta (y)

Salud OS

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2
Amigo lsedr... tu tema ha sido dividido por tratarse de otro asunto completamente diferente al resuelto aquí....

El enlace a tu nuevo tema se encuentra en:

http://www.delphiaccess.com/forum/index.php?topic=4070.0;topicseen

Saludox ! :)
« Última Modificación: 27 de octubre de 2010, 11:47:52 por Fenareth »

Conectado Fenareth

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 43
  • -Tu has recibido: 130
  • Mensajes: 2,999
  • Calificaciones: +158/-1
  • Sexo: Femenino
  • Dulce corderito entre lobos
Amigo lsedr... tu tema ha sido dividido por tratarse de otro asunto completamente diferente al resuelto aquí....

El enlace a tu nuevo tema se encuentra en:

http://www.delphiaccess.com/forum/index.php?topic=4070.0;topicseen

Saludox ! :)

Te esperamos en el nuevo tema amigo... algunos foristas ya te dimos algunos tips para lo que necesitas (y)

Saludox ! :)
Tu corazón late a la izquierda y el mío late junto al tuyo...

Desconectado egostar

  • Administrador
  • ******
  • Panel de agradecimientos
  • -Tu has dado: 1194
  • -Tu has recibido: 651
  • Mensajes: 10,417
  • Calificaciones: +726/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Perdon, dividí el tema y no lo informé en este hilo. Mea culpa

Salud OS

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."
- Benjamin Franklin
"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."- Anónimo


          

Desconectado lsedr

  • Usuario Activo
  • ***
  • Panel de agradecimientos
  • -Tu has dado: 106
  • -Tu has recibido: 0
  • Mensajes: 271
  • Calificaciones: +0/-2