Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2005
JanoRod JanoRod is offline
Registrado
 
Registrado: ago 2005
Posts: 6
Poder: 0
JanoRod Va por buen camino
Problemas para actualizar ADO con Dbgrid con puro Codigo

Hola A todos los maestros, me gustaria saber si alguien me podria ayudar de como poder actualizar el dbgrid con puro codigo, les detallo el siguiente codigo
, lo que no entiendo es cuando realizo todo esto por conexion directa, es decir, sin tantas conecciones funciona todo OK pero al realizarlo esto por codigo no funka , si alguien sabe cual es mi error porfavor explicarme


los dbgrid los conecto por codigo al igual que los otros controles haciendo la actualizacion adoquery1.close y luego adoquery1.open;

procedure Tmenu_principal.FormCreate(Sender: TObject);
var
conexion:string;
begin
conexion:=('Provider=Microsoft.Jet.Oledb.4.0;Data source=c:\inventario.mdb;Persist Security Info=false');
adoconnection1.ConnectionString :=conexion;
adoconnection1.Open ;
adoquery1.ConnectionString :=conexion;
adoquery1.Open ;
adoquery2.ConnectionString:=conexion;
adoquery2.Open ;
lista.Columns[0].FieldName :='unidad_medida';
lista.Columns[1].FieldName :='descripcion_und';
datasource2.DataSet :=adoquery2 ; //
dbgrid1.DataSource:=datasource2 ;
adoquery2.Close ;
adoquery2.Open ;
end;
procedure Tmenu_principal.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
adoquery1.Close;
with adoquery1 do begin
with adoquery1.SQL do begin
clear;
add (consultaSQL);
end;
open;
end;
if adoquery1.Eof then begin
'<guarda datos>
'aca deberia actualizar dbgrid1 (lista) pero no actualiza en que estoy MAL
end
else begin
<muestra datos guardados>
end;
end;
end;

si alguien me podria ayudar lo agradeceria
Saludos a Todos
Responder Con Cita
  #2  
Antiguo 24-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
veamos.

Que tal JanoRod, mira de entrada veo que tienes un adoConnection que no se para que lo utilizas si a cada adoquery le vuelves a pasar la cadena de conexion.

Código Delphi [-]
conexion:=('Provider=Microsoft.Jet.Oledb.4.0;Data source=c:\inventario.mdb;Persist Security Info=false');
adoconnection1.ConnectionString :=conexion;
adoconnection1.LoginPrompt := False;
adoconnection1.connected := True;
adoquery1.Connection := adoconnection1
adoquery1.Open ;
adoquery2.Connection := adoconnection1
adoquery2.Open ;


vamos clarificando un poco mas el código.

Código Delphi [-]
with adoquery1 do begin
  Close;
  SQL.clear;
  SQL.add (consultaSQL);
  open;
  //Aqui podrias utilizar algo asi...
  if IsEmpty then
     //lo que quieras hacer...
  else
    //de lo contrario...
end;


Espero por lo menos haberte ayudado un poco en clarificar el código.


Saludos.

Vicente López.
Responder Con Cita
  #3  
Antiguo 24-08-2005
JanoRod JanoRod is offline
Registrado
 
Registrado: ago 2005
Posts: 6
Poder: 0
JanoRod Va por buen camino
Coneccion Manual Adoconnection

Cita:
Empezado por Chente(rMan)
Que tal JanoRod, mira de entrada veo que tienes un adoConnection que no se para que lo utilizas si a cada adoquery le vuelves a pasar la cadena de conexion.

Código Delphi [-]
 conexion:=('Provider=Microsoft.Jet.Oledb.4.0;Data source=c:\inventario.mdb;Persist Security Info=false');
 adoconnection1.ConnectionString :=conexion;
 adoconnection1.LoginPrompt := False;
 adoconnection1.connected := True;
 adoquery1.Connection := adoconnection1
 adoquery1.Open ;
 adoquery2.Connection := adoconnection1
 adoquery2.Open ;


vamos clarificando un poco mas el código.

Código Delphi [-]
 with adoquery1 do begin
   Close;
   SQL.clear;
   SQL.add (consultaSQL);
   open;
   //Aqui podrias utilizar algo asi...
   if IsEmpty then
      //lo que quieras hacer...
   else
     //de lo contrario...
 end;


Espero por lo menos haberte ayudado un poco en clarificar el código.


Saludos.

Vicente López.
HOLA VICENTE, EL ADOCONNECTION LO OCUPO PARA LA CONECCION MANUAL DE LA BASE DE DATO SIN OCUPAR EL WIZARD YA QUE ESTE ME DEFINE UN DIRECTORIO ESPECIFICO O FIJO OCUPANDO EL WIZARD , LA CADENA CONEXION ORIGINAL ES LA SIGUIENTE:

conexion:=('Provider=Microsoft.Jet.Oledb.4.0;Data source='+ExtractFilePath(application.ExeName)+'\inventario.mdb;mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Encrypt Database=True;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDBatabase Password=jano2969');

Como se muestra el codigo la sintaxis de ExtractFilePath(application.ExeName) me define la ruta donde esta el ejecutable asociado a la base de dato. ahora cuando verifico los datos guardados estan ok pero no asi en el dbgrid que esta conectado en forma manual con codigo :

a esto me refiero cuando es manual o a traves de puro codigo.


dbgrid1.Columns[0].FieldName :='unidad_medida'; // campo 1
dbgrid1.Columns[1].FieldName :='descripcion_und'; // campo 2

datasource2.DataSet :=adoquery2 ;
dbgrid1.DataSource:=datasource2 ;

adoquery2.Close ; // lo cierro
adoquery2.Open ; // lo vuelvo abrir para su supuesta actualizacion


Vicente si sabes alguna manera de saber en que me equivoco te agradeceria la respuesta o algun comentario

de antemano saludos
Responder Con Cita
  #4  
Antiguo 24-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
dbgrid1.DataSource:=datasource2 ;
// campo 1 ¿y si haces esto?
dbgrid1.Columns[0].FieldName :=datasource2.Dataset.Fields[0].Name

Que pasa si lo haces de esa manera????

Ya tienes las actualizaciones del ADO ????
__________________

Responder Con Cita
  #5  
Antiguo 25-08-2005
JanoRod JanoRod is offline
Registrado
 
Registrado: ago 2005
Posts: 6
Poder: 0
JanoRod Va por buen camino
Gracias Maestro....

Cita:
Empezado por JanoRod
HOLA VICENTE, EL ADOCONNECTION LO OCUPO PARA LA CONECCION MANUAL DE LA BASE DE DATO SIN OCUPAR EL WIZARD YA QUE ESTE ME DEFINE UN DIRECTORIO ESPECIFICO O FIJO OCUPANDO EL WIZARD , LA CADENA CONEXION ORIGINAL ES LA SIGUIENTE:

conexion:=('Provider=Microsoft.Jet.Oledb.4.0;Data source='+ExtractFilePath(application.ExeName)+'\inventario.mdb;mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Encrypt Database=True;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDBatabase Password=jano2969');

Como se muestra el codigo la sintaxis de ExtractFilePath(application.ExeName) me define la ruta donde esta el ejecutable asociado a la base de dato. ahora cuando verifico los datos guardados estan ok pero no asi en el dbgrid que esta conectado en forma manual con codigo :

a esto me refiero cuando es manual o a traves de puro codigo.


dbgrid1.Columns[0].FieldName :='unidad_medida'; // campo 1
dbgrid1.Columns[1].FieldName :='descripcion_und'; // campo 2

datasource2.DataSet :=adoquery2 ;
dbgrid1.DataSource:=datasource2 ;

adoquery2.Close ; // lo cierro
adoquery2.Open ; // lo vuelvo abrir para su supuesta actualizacion


Vicente si sabes alguna manera de saber en que me equivoco te agradeceria la respuesta o algun comentario

de antemano saludos
Hola Vicente gran Master tenias toda la razon estaba un error, ahora la solucion esta todo OK.

Vale Saludos te pasastes.

solo hice los cambios que mencionas y listo.

adoquery1.Connection :=adoconnection1 ;
adoquery1.Open ;

adoquery2.Connection :=adoconnection1 ;
adoquery2.Open ;

y despues actualizo al momento junto a los adoquery1.close ; adoquery1.open;
Responder Con Cita
  #6  
Antiguo 25-08-2005
Avatar de Chente(rMan)
Chente(rMan) Chente(rMan) is offline
Miembro
 
Registrado: ago 2005
Posts: 89
Poder: 19
Chente(rMan) Va por buen camino
Me alegra que se haya solucionado , por cierto, no soy master , voy aprendiendo igual que todos.

Saludos.
Vicente López.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 10:59:29.


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