[RESUELTO] Pasos para conectar una BD SQL server 2005 a Delphi 7 y modificarla
#1
Escrito 23 octubre 2010 - 10:54
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.
#2
Escrito 24 octubre 2010 - 07:45
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:
ADOTable1.FieldByName('NombreCampo') // por nombre 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,
#3
Escrito 24 octubre 2010 - 07:56
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.
#4
Escrito 25 octubre 2010 - 02:20
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:
ADOTable1.Insert; ADOTable1.FieldByName('Codigo').AsInteger := 12345; 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í:
ADOQuery1.SQL.Text := 'INSERT INTO ....';
O también se puede "partir" en líneas:
ADOQuery1.SQL.Add('SELECT ...'); ADOQuery1.SQL.Add('FROM ... '); 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:
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,
#5
Escrito 25 octubre 2010 - 11:09
#6
Escrito 25 octubre 2010 - 11:37
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 ????
#7
Escrito 27 octubre 2010 - 06:20
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.
#8
Escrito 27 octubre 2010 - 09:17
#9
Escrito 27 octubre 2010 - 09:19
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 !
#10
Escrito 27 octubre 2010 - 09:20
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
#11
Escrito 27 octubre 2010 - 09:31
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 ?????
#12
Escrito 27 octubre 2010 - 09:46
ADOTable1.Active := True //Opcion 1 ADOTable1.Open; //Opcion 2
Saludos.
#13
Escrito 27 octubre 2010 - 10:13
#14
Escrito 27 octubre 2010 - 10:29
gracias hermano esa era la solucion, activarlo
Vaya, pues que bien, pequeño olvido
He ahí la importancia de la descripción completa de una pregunta
Salud OS
#15
Escrito 27 octubre 2010 - 10:45
El enlace a tu nuevo tema se encuentra en:
http://www.delphiacc...070.0;topicseen
Saludox !
#16
Escrito 27 octubre 2010 - 10:50
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.delphiacc...070.0;topicseen
Saludox !
Te esperamos en el nuevo tema amigo... algunos foristas ya te dimos algunos tips para lo que necesitas
Saludox !
#17
Escrito 27 octubre 2010 - 10:59
Salud OS
#18
Escrito 28 octubre 2010 - 11:29