FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como hacer una BD que se conecte a SqlServer2005
Holas pues bien tengo un problema con una BD ya que quiero utilizar todos las tablas pero no tengo ni idea de como empezar o que componentes elegir para hacer buen eso de ellos.
mire un video en donde utilizan un AdoConnection, DataSource y un DataSet todo esto esta bien en el manejo de datos, puedo verlos en un DBgrid etc, y puedo haces inserciones, pero el problema es que en el DataSet en cu propiedad CommandText solo agrego una Tabla de toda mi BD y no se si hay que poner Todas y como vendria siendo el resultado final. Mi aplicacion la uso con ventanas MDIChild asi que cada tabla quisiera usarla en una MDIchild diferrente en donde pueda hacer altas, bajas y modificaciones pero como repito una Tabla de mi BD por cada MDIChild, no se si es un DataSet por Tabla y en que parte hiria ese DataSet. la unica tabla que manejo y hago inserciones es la de Usuarios, y mi conexion y todos los componentes ADO esta en la form Principal, la MDIPAdre y en otra MDIChild hago uso de esta para manejar la tabla de usuarios como les decia, pero no se como usar mis demas tablas, si es un DataSet diferente en la misma MDIPadre o si es un DataSet en una MDIChild o como hacerle para hacer el manejo de todas mis tablas, les agradeceria la ayuda, me urge para implementarlo este fin de semana |
#2
|
||||
|
||||
La propiedad commandText depende de commandType, puedes poner el nombre de una tabla, una consulta o un procedimiento almacenado, si quieres usar otras tablas o objetos como los ya mencionados necesitas más adodatasets, puedes poner tanto como quieras en un formulario, aunque te recomendaría usar datamodules para este tipo de componentes
__________________
self.free; |
#3
|
|||
|
|||
ah ok buen punto, entonces si yo elijo en la opcion de commandType cmdTables, me dara solo la opcion de Tables, y dependiendo lo quiera hacer entonces lo que se debe elegir supongo ya que como me dijiste si quiero hacer alguna consulta, dentro de CommandString deberia de poner una consulta, espero sea asi po rel momento ya mire lo que me quieres decir, ahora tendre que investigar como usar un DataModule ya que he mirado en este foro que se menciona mucho, gracias por aclararme la duda en lo de DataSet y ahora mismo me pondre a investigar como usar el DataModule y si me conviene ya que son varias tablas las que manejare, minimo 10, gracias droguerman
|
#4
|
||||
|
||||
Bueno basicamente en palabras sencillas, un Datamódule(modulo de datos) es un "formulario contenedor" donde puedes poner tus componentes que van a conectarse con la Base de dato,ojo.. un datamodule solo puede contener componentes que no son visibles en tiempos de ejecucion, como ejemplo un ADOTable,ADOQuery,Query,Table,ClientDataSet,etc,etc...
Al crear un datamodule es como crear una nueva unidad pero que tenga la posibildad de contener componentes para algun uso en cuestion.., en tu caso sería componentes de acceso a tu BD. En otras palabras el uso de un DataMódule es basicamente para tener una mejor organizacion de los componentes en nuestra aplicacion... Para crear un dataModule en delphi te vas al menú File>New>Data Module y se creará una nueva unidad que tiene un formulario especial donde debes poner tus componentes de acceso a tu BD. Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#5
|
|||
|
|||
Perfecto Perfecto, eh estado leyendo aqui sobre ese mismo Modulo, y me parece que la idea ya esta muy clara con respeto a lo que es, ahora mi pregunta es que antes yo usaba (tengo un mes apenas usando delphi xD) todo en los formularios que lo requirieran, que no eran muchos apenas llevaba uno de puras altas, la unica duda que tengo por el momento es que yo usaba el DataSet que se conectaba a la Tabla que requeria, pero he leido mucho ahora que usan el AdoTable para hacer la conexion a esas mismas Tablas cuando usan DataModule.
Me pregunto (Yo no usaba antes ADOTable, usaba solo un DataSet para usar mi tabla de usuarios y dar inserciones), tengo que usar un ADOTable por cada tabla, pero entonces ya no usare el DataSet???? si, si uso el DataSet, tengo que usar un DataSet por cada ADOTable que uso por cada tabla??? o solo usando el DataSet ya no usare el ADOTable permitiendome con esto tener un DataSet pro tabla y su manejo normal hasta como lo venia haciendo? agradesco de antemano la ayuda. |
#6
|
||||
|
||||
Primero que nada debes entender lo que es un DataSet en español seriá como un "Conjunto de datos" es decir es un objeto que se encarga de la gestion de datos desde y hacia la base de datos, por tanto es el dataSet el que contiene los registros en un Buffer de memoria cuando por ejemplo hacemos una consulta SQL hacia la base de datos, pero si revisamos la clase TDataSet en delphi nos vamos a dar cuenta que es como una "clase Abstracta", por tanto su uso directamente no tiene sentido ya que la mayoría de sus métodos son virtuales.Es así que para usarlo hay que crear (instanciar) uno de sus descendientes,es decir algun componente descendiente de la "clase TDataSet" entre los cuales te puedo nombrar por ejemplo: TADOTable,TADOQuery,TQuery,TTable,TZTable,TZQuery,TIBTable,TIBQuery,etc,etc...., entonces eso significa que tus preguntas >
Cita:
Talves te has confundido y lo que estés preguntando, más bien se trate del componente DataSource...hummm...aclaranos mejor la figura... Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 01-03-2011 a las 15:21:58. |
#7
|
|||
|
|||
haber haber, creo que no me explique, ok
1- tengo un DataSet que en su propiedad commandText, solo uso la tabla Usuarios y la sentencia queda asi: Select * from Usuario. 2- Tengo un AdoTable que esta conectado a este DataSet y por el cual hago las inserciones. 3-Tengo un AdoQuery con el que consulto la tabla de usuarios para loguearme, ok hasta aqu itodo bien puedo hacer las altas que deseo y todo, pero ahora lo que necesito es * Hacer una consulta a la Base de Datos de Usuario, en donde por medio del ID que se ingrese por una TEdit me despliegue el resultado en un DBGrid. lo que no se , es si necesito un nuevo DataSet, (ya que el anterior tiene como te decia, la sentencia 'Select * from Usuario' y tambien si necesito un AdoQuery por donde entrara la sentencia de la consulta que estara ligado a este no se si nuevo DataSet. y como le puedo hacer para que en un solo DBGrid se muestren las diferentes consultas que haga, por ID de usuario, por Nombre, porEstado, etc etc etc pero todo en un mismo DBGrid. o es mejor hacerlo en diferentes??? (Digo esto por que tengo un DBGrid que esta conectado al primer DataSet y muestra todos los usuarios de la Base de datos, por que com orepito tiene la sentencia 'Select * from Usuario'). gracias |
#8
|
||||
|
||||
Cita:
Quizás estes hablando del Componente ADODataSet...pero mejor explicanos, por que como te dije en el anterior post el término "Dataset" es general y puede referirse a cualquier componente descendiente de la clase TDataSet de Delphi., asi que si estás hablando de un componente ADODataSet pues no deberías decir Dataset, sino mas bien ADODataSet para una mejor comprensión Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#9
|
|||
|
|||
si disculpa es un ADODataSet el que utilizo y como decia...
1- tengo un ADODataSet que en su propiedad commandText, solo uso la tabla Usuarios y la sentencia queda asi: Select * from Usuario. 2- Tengo un AdoTable que esta conectado a este ADODataSet y por el cual hago las inserciones. 3-Tengo un AdoQuery con el que consulto la tabla de usuarios para loguearme, ok hasta aqu itodo bien puedo hacer las altas que deseo y todo, pero ahora lo que necesito es * Hacer una consulta a la Base de Datos de Usuario, en donde por medio del ID que se ingrese por una TEdit me despliegue el resultado en un DBGrid. lo que no se , es si necesito un nuevo ADODataSet, (ya que el anterior tiene como te decia, la sentencia 'Select * from Usuario' y tambien si necesito un AdoQuery por donde entrara la sentencia de la consulta que estara ligado a este no se si nuevo DataSet. y como le puedo hacer para que en un solo DBGrid se muestren las diferentes consultas que haga, por ID de usuario, por Nombre, porEstado, etc etc etc pero todo en un mismo DBGrid. o es mejor hacerlo en diferentes??? (Digo esto por que tengo un DBGrid que esta conectado al primer ADODataSet y muestra todos los usuarios de la Base de datos, por que como repito tiene la sentencia 'Select * from Usuario'). gracias y sorry por omitir ese prefijo, ADO |
#10
|
||||
|
||||
Bueno hay que ver si tienes algun DataSet(llámese éste ADODataSet,ADOQuery,etc) que no se ésta ocupando en nada pues tranquilamente puedes usarlo y cambiar su propiedad SQL o ComandText para hacer una consulta SQL espefíca en la BD., pero si por el contrario todos estan ocupados(por así decirlo) pues debes Instanciar(create) o utilizar otro., cosa que lo veo que es lo mejor en tu caso, ya que segun veo quieres cambiar dinamicamente la consulta SQL e ir mostrando los resultados en un DBGrid, para lo cual debes crearte un DBGrid Específico donde mostrarías los datos que hagas dinamicamente. al cambiar y ejecutar las consultas SQL, éste DBGrid mostraría los cambios y nuevos datos.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#11
|
|||
|
|||
ok gracias por la ayuda...
pero mi duda aun sigue, COMO le hago para que en un DBGrid se puedan ver varias consultas que quiero hacer por medio de TEdit ingrese, ya sea Nombre, Id, Ciudad, Estado, etc etc ect, el unico ADODataSet que uso por el momento, tiene en su propiedad commandText la sentencia, 'select * from Usuario' el cual al entrar a la ventana ya muestra los usuarios que tengo registrados, ahora quiero que al hacer la consulta, la consulta de un ID, se muestre dentro de Este mismo DBGrid el resultado de la consulta, por eso pregunto como hacer para que se vean multiples consultas en un mismo DBgrid, recomiendan eso? o es: --- 1 DBgrid por cada consulta que haga? lo cual no se tambien si conlleva a tener un ADODataSet por cada consulta? esa desde un principio ah sido mi duda, saludos y como dice 'rgstuamigo', a que se refiere con 'DBGrid Especifico' algun tipo de DBGrid en especial? sorry por tanta pregunta pero soy nuevo, gracias |
#12
|
||||
|
||||
Cita:
Espero que me haya explicado bien... Saludos... EDITO: Por si acaso si estas trabajando en la misma Tabla y lo que pretendes es Filtrar los registros entonces puedes utilizar las propiedades "Filter" y "Filtered" de tu ADODataSet para asignar un filtro y activarlo respectivamente., para más información consulta la Ayuda de Delphi presionando la tecla "F1".
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 02-03-2011 a las 17:05:01. |
#13
|
|||
|
|||
ok okok perfecto, deja y ahora mismo trabajo con ello, ya que estaba atorado intentando hacer eso pero no me salia, no tengo ni idea en que me meti en esto de las Base de Datos y es que por el trabajo no tengo tiempo de leer algun libro de Delphi, ahora mismo intento leer 'La cara oculta de delphi 4' pero solo lo hago en el poco tiempo que tengo libre, espero entender bien todos los conceptos para no estar causando molestias xD gracias rsgtuamigo, y cualquier cosa aviso
|
#14
|
|||
|
|||
hola que tal, mira ya ejecute la sentencia y me sale muy bien, gracias por el dato enserio, yo usaba el ADOQuery para ejecutar la sentencia y no se si ahi estaba mi error, creo que es lo mismo pero nunca se me ocurrio utilizar las propiedades de commandtext en codigo, solo la usaba en la propiedad del objeto pero no tenia ni idea, ahora mismo tengo una duda y es que
---no se como capturar las entradas por medio de un Tedit pero en numero y pasarlas a las sentencias SQL, este es mi codigo consulta:= 'Select * from Usuario where Nombre = ' + QuotedStr(edtBuscar.Text); DataModulePrincipal.ADODataSetUsuario.CommandText:= consulta; DataModulePrincipal.ADODataSetUsuario.Open; esto esta bien pero cuando son Strings lo que paso del edtBuscar que es donde capturo un nombre, apellido, direccion etc, pero solo es string, pero si intento capturar un numero, obvio tengo que hacer la conversion de String a Numero pero no lo genera, in tente con StrToInt(edtBuscar.Text) pero no sale, y busque acerca de que era 'QuotedStr' y entendi el concepto pero no encontre algo para pasar los numeros. no se si sepas algo acerca de esto, ahora mismo estoy buscando opciones pero no he encontrado, gracias por la ayuda. //De esta forma intente pero no lo acepta StrToInt(edtBuscar.Text); consulta:= 'Select * from Usuario where Nombre = ' + StrToInt(edtBuscar.Text); DataModulePrincipal.ADODataSetUsuario.CommandText:= consulta; DataModulePrincipal.ADODataSetUsuario.Open; |
#15
|
|||
|
|||
hey rsgtuamigo, descuida ya ejecute con exito la sentencia de SQL pero con un ADOQuery y utilizando parametros para definir el tipo de dato que deseo capturar, me revolvi un monton y estaba bien sencillo, investigando y sobre tu aclaracion me aclaro que puedo usar las propiedades normalmente (cosa que omiti en esta ocasion :S), de todos modos gracias, ya resolvi el problema, y me esta agradando delphi xD apenas un mes con este lenguaje de programacion pero me falta aun muchisimo, gracias de nuevo, despues investigo como hacer esa conversion por si despues la ocupo, por ahora ya no
|
#16
|
||||
|
||||
Bueno.. existen muchas formas de hacer lo que pretendes pero primero creo que debes explicarnos por que tratas de hacer una busqueda en tu BD con un entero (integer) si segun entiendo el campo "nombre" de tu tabla es de tipo Varchar(), bueno amenos eso entiendo
De todas formas te voy a dar un ejemplo completo de como puedes solucionar tu problema(si estas hablando de una misma tabla) y lo que necesitas es ver solo algunos datos(registros) específico: Supongamos que tenemos un tabla de nombre "Usuario" (siguiendo tu ejemplo tuyo )en la BD con los siguientes campos: Cita:
Lo que vamos hacer es utilizar un componente ADOTable (Puede ser tambien un ADODataset o ADOQuery), enganchamos al ADOTable a nuestro componente TADOConnection que logicamente tiene todas sus propiedades bien configuradas, ponemos el nombre de la tabla de la BD a nuestro ADOTable, ésto se hace en la propiedad "TableName" del mismo,es decir nuestra tabla "Usuario";para visaulizar los registros podemos utilizar un componente DBGrid que esté ligado aun componente DataSource que a su ves está enganchado anuestro ADOTable, en sintesis la cadena de enganches sería así: Cita:
y el asunto se solucionaría ¿verdad? pero en nuestro caso estamos usando un componente ADOTable el cual no posee una propiedad SQL o ComandText como los otros DataSet, sin embargo existe una mejor forma de resolverlo ya sea que se use un AdoTable o AdoQuery o cualquier otro dataSet, sin estar cambiando la consulta SQL a cada rato y es lo que mencioné en el anterior post los llamados filtros. Todos los DataSet(Componentes que son descendientes de la clase TDataSet) tienen dos propiedades específicas para establecer filtros, una es "Filter" que de tipo String donde podemos colocar diferentes formas de filtrar los registros, ya sean de alguna columna o algun registro específico; la otra propiedad es "Filtered" que es la encargada de activar o desactivar el filtro de la propiedad "Filter", pero vamos con un ejemplo: Quiero mostrar solo el usuario con ID = 6 en mi ADOTable entonces vamos a plicar un filtro para que solo se muestre en nuestro DBGrid el usuario cuyo ID sea 6: Colocamos lo siguiente en el evento OnClick de un componente TButon Al hacer eso, sólo voy a visualizar en mi DBGrid aquellos usuarios que tengan ID = 6, pero vamos con otro ejemplo con otra columna o campo > Etc. Como podemos ver los filtros nos pueden servir tanto para buscar algun registro específico o tambien para visualizar en pantalla algun registro en cuestion.Para más informacion podemos buscar en la ayuda de Delphi( presionar la tecla F1 para abrir la ayuda). Espero sea de utilidad... Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 02-03-2011 a las 23:01:35. |
#17
|
|||
|
|||
Perfecto Perfecto Mas claro que el agua, gracias por al ayuda enserio, ya estoy entendido bien como es la descendencia, no solo de TDataSet, sino cual va enganchado con cual para hacer las diferentes operaciones o visualizaciones, me esta quedando muy claro y es lo que no sabia, que componente va primero o cual despues, o cual conectado a cual, ese era mi gran problema por que como te digo estoy leyendo a pasos pequenios el libro de 'la cara oculta de delphi 4' por lo cual estoy perdido y resolviendo solo lo que se me presenta a mi paso por el momento.
con esto me queda claro lo que tengo que hacer y no ando tan perdido. a lo que me mencionas de por que una busqueda numerica y mi campo 'Nombre' es string, lo que pasa es que me equivoque al poner esa sentencia, lo que queria hacer era una busqueda numerica por el ID de usuario, y no encontraba la manera e onvertir el dato de cadena a numero, usaba el QuotedStr pero para los strings, eh intentaba hacer el 'StrToInt' para convertirlo pero no me lo acepta, aparte de que estaba usando un ADODataset en su propiedad, commandText para hacer esto, lo cual si fue revoltoso, no entendia hasta hoy que me me acorde viendo tu ejemplo de manipular las propiedades del ADODataset, por lo cual mejor utilice el ADOQuery y con el cual ahora mismo estoy haciendo las consultas. asi me quedo y asi me funciono mejor. Cita:
|
#18
|
|||
|
|||
SORRY!!! esa parte de codigo esta mal jajaja abri un respaldo del archivo que estaba mal y lo copie de ahi, sorry, este es el codigo que uso para hacer la consulta numerica, por parametros y asi funciona bien, disculpa jajaja no me fije, aqui esta el correcto. :S
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
SqlServer2005-Jobs y Packages -Integration Services 2005 | gemarin | SQL | 2 | 19-06-2008 15:31:38 |
Aplicación que se conecte a cuenta de correo y lea los archivos adjuntos | JamesBond_Mx | Internet | 4 | 07-12-2005 00:47:43 |
Ya conecte a Forms, pero Listener marca error .. | Lore Castillo | Oracle | 1 | 12-10-2005 13:46:09 |
INIDataSet ¿Existe un data set que se conecte a archivos .ini? | Al González | Conexión con bases de datos | 6 | 11-05-2004 19:32:50 |
Ayuda para un componte que conecte a firebird 1.5 | ronimaxh | Conexión con bases de datos | 1 | 28-11-2003 22:21:43 |
|