Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 02-03-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por ivantj24 Ver Mensaje
.. 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?
Bueno... para mostrar varias consulta en un mismo DBGrid.. simplemente debes cambiar la consulta SQL de tu DataSet en cuestion(en tu caso tu dataSet es el ADODataSet segun entiendo). Por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADODataSet1.Close;// Cierro el ADODataSet;  Es lo mismo que -> ADODataSet1.Active:=False
  ADODataSet1.CommandText:='Select Estado from Usuario';//Aqui cambio la consulta SQL por la que 
                              //yo quiera, inclusive puedo trabajar con otra tabla distinta
  ADODataSet1.Open;//Abro nuevamente el ADODataSet; Es lo mismo que -> ADODataSet1.Active:=True
{Lógicamente el DBGrid se actualiza automáticamente cada ves que cambio y ejecuto
 la consulta SQL del ADODataSet}
end;
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 16:05:01.
Responder Con Cita
  #3  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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;
Responder Con Cita
  #5  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 02-03-2011
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 19
rgstuamigo Va por buen camino
Arrow

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:
------ Tabla Usuario-----
ID Nombre Estado
Dónde se tiene ya muchos registros guardados...

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:
ADOConnection1 < ADOTable1 < DataSource1 < DBGrid1
Si activamos(Active=True) nuestro componente ADOTable vemos que trae desde la BD todos los registros sin excepcion de ninguno. Pero lo que se quiere es que por ejemplo mostrar el usuario que tiene como ID=6, es decir solo quiero mostrar el usuario cuyo ID es igual a 6, lógicamente si estuviéramos trabajando con un ADOQuery,lo que hariamos sería cambiar de sentencia SQL algo como:
Código SQL [-]
Select * from Usuario Where ID = 6
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
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOTable1.Filter:='ID=6';// le digo que el filtro es que me muestre solo el usuario cuyo ID es 6
ADOTable1.Filtered:=True;// activamos el filtro
end;
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 >
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOTable1.Filter:='Nombre='+Edit1.Text;// le digo que el filtro es que me muestre solo 
                        //el usuario cuyo Nombre sea igual a lo tengo en el Edit1
ADOTable1.Filtered:=True;// activamos el filtro
end;
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 22:01:35.
Responder Con Cita
  #7  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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:
DataModulePrincipal.ADOTableUsuario.ADODataSetUsuario.CommandText:= 'Select * from where UsuarioID = (:consultaNum)';
DataModulePrincipal.ADODataSetUsuario.Parameters('consultaNum').AssignValues(:consultaNum);
DataModulePrincipal.ADODataSetUsuario.Open;
con esto ya hice la busqueda por medio de un numero y dependiendo un RadioButton que elija el usuario, hare la conversion, ya sea a entero o a cadena, por lo cual se resolvio mi problema, y ahora ya entiendo bien como definir cada componente y engancharlo para que se visualice, muchas gracias por la paciencia, y espero que no surgan mas dudas xD gracias :P
Responder Con Cita
  #8  
Antiguo 02-03-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Poder: 16
ivantj24 Va por buen camino
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:
DataModulePrincipal.ADOQueryUsuarios.SQL.Add('Select * from Usuario where UsuarioID = :UsuarioID');
DataModulePrincipal.ADOQueryUsuarios.Parameters.ParamByName('UsuarioID').Value:= StrToInt(edtBuscar.Text);
DataModulePrincipal.ADOQueryUsuarios.Open;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SqlServer2005-Jobs y Packages -Integration Services 2005 gemarin SQL 2 19-06-2008 14:31:38
Aplicación que se conecte a cuenta de correo y lea los archivos adjuntos JamesBond_Mx Internet 4 06-12-2005 23:47:43
Ya conecte a Forms, pero Listener marca error .. Lore Castillo Oracle 1 12-10-2005 12: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 18:32:50
Ayuda para un componte que conecte a firebird 1.5 ronimaxh Conexión con bases de datos 1 28-11-2003 21:21:43


La franja horaria es GMT +2. Ahora son las 01:48:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi