PDA

Ver la Versión Completa : Novato - Aplicaciones con Base de Datos


Chocoslovaco
24-06-2005, 18:27:24
Antes que nada Felicitarlos por este portal tan completo, y a continuación expreso mi consulta::(
Soy nuevo en este entorno de desarrollo (Delphi) y necesito desarrolllar una aplicacion que trabaje con una BD de Access 97, dicha aplicacion no tiene que visualizar nada en pantalla; solo realizar una actualizacion de varios campos en varias tablas; es decir debo seleccionar los cargos (duedores) de mis clientes y actualizarlas a pagadas con su repectivos abonos. No conozco nada de como conectarme a la base de datos estuve clikeando componentes ADO y logre conectarme a la BD (a traves de asistente y la propiedad ConnectionString), pero quisiera saber si existe otra forma diferente, me refiero a si puedo colocar ese componenete en un modulo de datos pero de entrada no utilizar el asistente sino en tiempo de ejecucion conectarme y como poder empezar a realizar mis primeras consultas y recorrer las mismas. Muchas Gracias por los comentarios que puedan hacerme llegar y espero haberme expresado lo mas claro posible.

Saludos a todos
Oswaldo Jr

marcoszorrilla
24-06-2005, 21:45:00
Efectivamente puedes alojar el componente en un módulo de datos, de hecho esa es la opción más usual.

En cuanto a pasarle los valores en tiempo de ejecución, se puede pero creo que es mucho más sencillo utilizar el asistente.

Para las consultas puedes utilizar un AdoQuery.

Lo mejor es que vayas haciendo pruebas y nos vayas preguntando a medida que te surjan dudas puntuales.

Un Saludo.

Chocoslovaco
25-06-2005, 18:40:16
Muchas Gracias por responder, efectivamenete ya logre conectarme a la BD, pero ahora quiero utilizar un ADODataSet, pero no se donde colocarlo exactamente o debi usar un ADOTable?, si lo coloco en el modulo de datos como hago referencia a el desde mi formulario, o si lo coloco en el Form como lo enlazo al ADOConnection, si pudieses(n) colocarme un codigo de como referenciarlo lo agradeceria mucho.
Gracias por todo

marcoszorrilla
25-06-2005, 19:07:07
Si lo colocas en el módulo de datos, simplemente tienes que hacer "Use" en el formulario en donde pretendes utilizarlo el resto es totalmente transparente.

Un Saludo.

Chocoslovaco
25-06-2005, 19:44:43
en el area de Implemetation de mi Form, coloque: Uses <Nombre del unit donde esta mi ADO Connection>, incluso ya coloque en mi form un ADODataSet, pero hasta aqui logre llegar pues intente colocar en la propiedad DataSource, el nombre del ADOConnection, pero no se despliega nada, incluso coloque un DBGrid (solo para intentar visualizar algo) pero tampoco logro relacionarlo, disculpa mi ignorancia en esto pero que dedo colocar, ya revise alguno otros enlaces en el foro y mencionan que se debo colocar en el evento OnCreate del Form, conectarse a la BD por eso de que se pueda desactivar la conecion, no he podido lograr nada, ¿Debo utilizar algun otro componente? donde pueda colocar una sentencia SQL (en codigo), o cual es el proceso a seguir, si me proporcionan un codigo general como ayuda, seria mas facil. Gracias.

Lepe
26-06-2005, 12:33:09
en el area de Implemetation de mi Form, coloque: Uses <Nombre del unit donde esta mi ADO Connection>, incluso ya coloque en mi form un ADODataSet, pero hasta aqui logre llegar pues intente colocar en la propiedad DataSource, el nombre del ADOConnection, pero no se despliega nada, incluso coloque un DBGrid (solo para intentar visualizar algo) pero tampoco logro relacionarlo,

Deberás poner el uses en la zona de interface, ya que el grid se declara en la zona superior al implementation, y por ello, todavía no encuentra la definición de AdoConnection.

Al colocarlo en la zona de interface, verás que en el inspector de objetos, en la propiedad Datasource del grid, te deja elegir cualquiera que tengas en el modulo de datos.

Un saludo

Chocoslovaco
06-07-2005, 20:15:24
Hola de nuevo a todos y de antemano agradezco todos sus comentarios;)
Y efectivamente ya he logrado enlazar corectamente mi base de datos incluso hasta prevenir un error en la conexion, ahora he estado intentando realizar algunas consultas (eliminacion o actualizacion de registros) con un ADODataSet, usando la propiedad CommandText y Open, pero ocurre un errror. :(
lo que necesito hacer es algo mas o menos asi: (no necesito visualizacion en pantalla)

Objeto_que-Desconozco.Propiedad:='DELETE * FROM [Mi_Tabla1] WHERE ....';
Objeto_que-Desconozco.Propiedad:='SELECT [Campo1], [Campo2], .. FROM [Mi_TablaC] WHERE ...';
Objeto_que-Desconozco.Propiedad.[Abrir SELECCION];
Recorrer [Mi_TablaC];
Actualizar [Campo3]:=[Campo1]+[Campo2];

en algunos links del foro encontre que este componente (ADODataSet) podia almacenar u operarar las propiedades de un ADOQuery o ADOTable, pero no encuentro como:D
Si alguien puede decirme que componentes debo utilizar y como utilizarlo, sera de mucha ayuda...Saludos a To2;)
P.D. Delphi 7 - Access 97

Chocoslovaco
07-07-2005, 20:15:32
Buenas Tardes a to2:D
Pues considero que ya avance un poco pues ya modifique (actualize) alguna de mis tablas con un ADOQuery haciendo algo como esto:

with QActualiza do
begin
SQL.Clear;
SQL.Text:='DELETE * FROM [Abonos no Aplicados]';
ExecSQL;
SQL.Clear;
SQL.Text:='DELETE * FROM [Abonos Pendientes]';
ExecSQL;
SQL.Clear;
end;

Ahora...quiero utilizar otro ADOQuery para tomar un valor y de un campo y guardarlo en una variable ..pero me dale un error de parametro no encontrado... no se si lo que esta en micodigo es correcto, he consultado la ayuda de Delphi y tomado algun ejemplo pero no funciona. SI Alguien puedise orientarme para corregir mi error u orientarme de como hacerlo?? Gracias.

var IdCliente:integer;
....
Query1.SQL.Text:='SELECT Id AS Registro FROM Clientes WHERE NombreCompañía='+ Cliente;
Query1.Parameters.ParamByName('NombreCompañía').Value:=Cliente;
QActualiza.Open;
IdCliente:=QActualiza.FieldValues['Registro'];


Cliente: es un parametro (string) de un procedure, NombreCompañía es del mismo tipo.
Delphi 7, Access 97

Chocoslovaco
08-07-2005, 00:17:55
:D :D :D Aqui de nuevo... saludandoles..Solo para agradecerles a todos los que se tomaron las molestia de leer y ayudarme con sus comentarios..MIL GRACIAS.
Y tambien para comunicarles que ya he avanzado pues digo yo que mucho pues ya logre resolver los problemas que comentaba antes. Muchos de los hilos que estan en el foro me fueron de mucha ayuda. Estoy en pleno desarrollo de mi programita de actualizacion, ahi les comentare mas adelante que tal me va y/o si tengo algun otro tropiezo, esteremos de vuelta por aqui. Nuevamente Gracias a Todos. Saludos.

Oswaldo Javier Ramirez.;)

Lepe
08-07-2005, 11:25:12
Por favor, al postear el código, en lugar de usar la palabra "code" usa la palabra "delphi"


var IdCliente:integer;
....
Query1.SQL.Text:='SELECT Id AS Registro FROM Clientes WHERE NombreCompañía= :prCliente';
Query1.Parameters.ParamByName('prCliente').Value:=Cliente;
QActualiza.Open;
IdCliente:=QActualiza.FieldValues['Registro'];

Ves la diferencia? ;)

como ves lo he modificado, los parametros, dentro del sql tienes que anteponerle los dos puntos (:) para que los tome como parámetros. Yo siempre le pongo el prefijo "pr" (parametro), y así no me confundo con los nombres de los campos en sql complejas

Un saludo