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 01-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Como llenar un stringGrid a partir de un Query?

Hola compañeros del foro, ahora estoy empezando a trabajar con StringGrids, he intentando llenar datos a partir de un query, ese es el codigo que he estado tratando de hacer:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
 with QArticulo do begin
  if active then Close; //Agregué aquí
  sql.Clear; // y aquí
  SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
  SQL.Add('WHERE ref = '+Edit1.Text+'');
  Open;
  if not IsEmpty then begin
  StringGrid1.Cells[1,1]:=fieldbyname('ref').AsString;
  StringGrid1.Cells[2,1]:=fieldbyname('aticulo').AsString;
  end else begin
    ShowMessage('Articulo no existe');
  end;
 end; 
end;
end;

pues como ven no me funciona me aparece ese error:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message 'Parameter Q2612A has no default value'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Estoy trabajando con ADO, nota es la primera vez que trabajo con stringGrids y no he documentacion suficiente acerca de ello a menos que este buscando mal, espero que me puedan echar una mano con eso.

saludos...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 01-09-2007
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
Re:

Cita:
Empezado por enecumene Ver Mensaje
Hola compañeros del foro, ahora estoy empezando a trabajar con StringGrids, he intentando llenar datos a partir de un query, ese es el codigo que he estado tratando de hacer:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
 with QArticulo do begin
  if active then Close; //Agregué aquí
  sql.Clear; // y aquí
  SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
  SQL.Add('WHERE ref = '+Edit1.Text+'');
  Open;
  if not IsEmpty then begin
  StringGrid1.Cells[1,1]:=fieldbyname('ref').AsString;
  StringGrid1.Cells[2,1]:=fieldbyname('aticulo').AsString;
  end else begin
    ShowMessage('Articulo no existe');
  end;
 end; 
end;
end;

pues como ven no me funciona me aparece ese error:



Estoy trabajando con ADO, nota es la primera vez que trabajo con stringGrids y no he documentacion suficiente acerca de ello a menos que este buscando mal, espero que me puedan echar una mano con eso.

saludos...


Prueba ESTO:


Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
 with QArticulo do begin
  if active then Close; //Agregué aquí
  sql.Clear; // y aquí
  SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
  SQL.Add('WHERE ref = '+QuotedStr(Edit1.Text) );
  Open;
  if not IsEmpty then begin
  StringGrid1.Cells[1,1]:=fieldbyname('ref').AsString;
  StringGrid1.Cells[2,1]:=fieldbyname('aticulo').AsString;
  end else begin
    ShowMessage('Articulo no existe');
  end;
 end; 
end;
end;
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #3  
Antiguo 01-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
gracias pcicom me funciono perfecto, ahora tengo otra consulta, luego de agregar los datos como enfoco a una celda específica y recorrer cada columna mediante tab o enter y que en la ultima columna vuelva el edit y agregar otra linea??...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #4  
Antiguo 02-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
bueno termine optando por usar un dbgrid, y he podido hacer lo que queria hacer, tengo:

1-DataSetProvider
1-ClientDataSet
2-ADOQuery1 y 2
1-Dataccess
1-Edit
1-DBGrid

hice la siguiente configuración:

->DataSetProvider->DataSet->ADOQuery
->ClientDataSet->ProviderName->DataSetProvider
->DataAccess->DataSet->ClientDataSet

supongo que esa configuración esta correcta, en el evento OnKeyDown del DBGrid puse este codigo:

Código Delphi [-]
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = VK_TAB then
begin
CLientDataset1.Append;
Edit1.Clear;
Edit1.SetFocus;
end;
end;

en el evento OnKeyPress del Edit puse este codigo:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
 with QArticulo do begin
  if active then Close;
  sql.Clear; // y aquí
  SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
  SQL.Add('WHERE ref = '+QuotedStr(Edit1.Text) );
  ClientDataSet1.Open;
  ClientDataSet1.Edit;
  Open;
  if not IsEmpty then begin
   DBGrid1.fields[0].Value:=QArticuloref.AsString;
   DBGrid1.Fields[1].Value:=QArticuloarticulo.AsString;
   DBGrid1.DataSource.DataSet.FieldByName('cantidad').FocusControl;
  end else begin
    ShowMessage('Articulo no existe');
  end; 
 end; 
end;
end;

hasta todo bien se agregan los datos al dbgrid mediante un edit, ahora tengo este problema y es cuando intento grabar los datos, puse un boton con este codigo:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
registrar.SQL.Clear;
registrar.SQL.Text:=' insert into entrada (articulo, cantidad, ref, suplidor, costo, itbis, monto, fecha, hora, usuario, fechauser)'+
                    ' values ("'+DBGrid1.fields[1].Value+'", "'+DBGrid1.Fields[2].Value+'", "'+DBGrid1.Fields[0].Value+'", "", "+double(0.00)", "+double(0.00)", "+double(0.00)", "", "", "", "")';
ShowMessage(registrar.SQL.Text);
registrar.ExecSQL;
end;

y me tira este error:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project inventario.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type (String) into type (Double)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
he intentado de todo, use Quotedstr, FloatToInt, double, strToInt, etc. todo igual... cual sera la causa? estoy haciendo algo malo?

adjunto codigo:

Archivo Adjunto 955
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.

Última edición por enecumene fecha: 14-09-2007 a las 17:28:58.
Responder Con Cita
  #5  
Antiguo 02-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Mientras estaba leyendo tu mensaje e iba por aquí...

Código:
... values ("'+DBGrid1.fields[1].Value+'", "'+DBGrid1.Fields[2].Value+'", ...
He pensado que acaso, en lugar de "Value", tenías que utilizar algo como "AsString"... por ejemplo. Pero, luego he echado la barra de scroll a la izquierda y he podido leer:

Código:
... "+double(0.00)", "+double(0.00)", "+double(0.00)", "", "", "", "") ...
Y entonces ya me he echado para atrás. No sé si lo que apunto al principio sirva de algo, si en esto último tenemos el problema,... en definitiva, me he quedao planchao.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 02-09-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
en realidad es un tollo de codigo dec, solo era una idea dado que es la primera vez que hago tipo de codigos, el codigo lo he dejado de esta manera:

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
registrar.SQL.Clear;
registrar.SQL.Text:=' insert into entrada (articulo, cantidad, ref, suplidor, costo, itbis, monto, fecha, hora, usuario, fechauser)'+
                    ' values ("'+DBGrid1.fields[1].AsString+'", "'+DBGrid1.Fields[2].AsString+'", "'+DBGrid1.Fields[0].Value+'", "", "", "", "", "", "", "", "")';
ShowMessage(registrar.SQL.Text);
registrar.ExecSQL;
end;

y me sale ese error que tantas veces me lo han dicho ni me acuerdo:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project inventario.exe raised exception class EOleException with message 'Data type mismatch in criteria expression'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

debo aclarar que los campos donde puse '+double(0.00), son campos numericos con formato standard con decimal (3,579.00) lo quiero almacenar valores de costo, precios y montos, y estoy usando componentes ADO base de datos ACCESS..
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 02-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No llevo seguimiento de esto pero creo que el problema puede ser el orden ademas del tipo de dato, prueba esto:
Edito: trate de arreglarlo, no pude, lo hago en el siguiente post.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 02-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Asi:
Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 a: real;
begin
 a:= 0.00;
registrar.SQL.Clear;
registrar.SQL.Text:=' insert into entrada (articulo, cantidad, ref, suplidor, costo, itbis, monto, fecha, hora, usuario, fechauser)'+
                    ' values ("'+DBGrid1.fields[1].Value+'", "'+DBGrid1.Fields[2].Value+'", "'+DBGrid1.Fields[0].Value+'", "", "'+a+'", "'+a+'", "'+a+'", "", "", "", "")';
ShowMessage(registrar.SQL.Text);
registrar.ExecSQL;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 09-01-2008
johnnySan johnnySan is offline
Registrado
 
Registrado: jun 2007
Posts: 9
Poder: 0
johnnySan Va por buen camino
Smile

[quote=pcicom;227652]Prueba ESTO:

Yo trabajando en DBE , lleno datos en un stringgrid asi:

Código Delphi [-]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var c:integer;begin
if Key=#13 then begin
query.sql.Closequery.sql.Clear;
query.SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
query.SQL.Add('WHERE ref = '+QuotedStr(Edit1.Text) );
Open;
while not query.Eof do begin
StringGrid1.Cells[1,c]:=query.Fields[0].asstring; //campo de cantidad
StringGrid1.Cells[2,c]:=query1.Fields[1].asstring;//campo de articulo
inc(c);query.next; end;if c=1 then ShowMessage('Articulo no existe');
query.close; end;
end;
Pero en un ADO ,debe ser a ese estilo o... no se.
Responder Con Cita
  #10  
Antiguo 09-01-2008
johnnySan johnnySan is offline
Registrado
 
Registrado: jun 2007
Posts: 9
Poder: 0
johnnySan Va por buen camino
Smile

[quote=pcicom;227652]Prueba ESTO:

Yo trabajando en DBE , lleno datos en un stringgrid asi:

Código Delphi [-]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var c:integer;begin
if Key=#13 then begin
query.sql.Closequery.sql.Clear;
query.SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
query.SQL.Add('WHERE ref = '+QuotedStr(Edit1.Text) );
Open;
while not query.Eof do begin
StringGrid1.Cells[1,c]:=query.Fields[0].asstring; //campo de cantidad
StringGrid1.Cells[2,c]:=query1.Fields[1].asstring;//campo de articulo
inc(c);query.next; end;if c=1 then ShowMessage('Articulo no existe');
query.close; end;
end;
Pero en un ADO ,debe ser a ese estilo o... no se.
Responder Con Cita
  #11  
Antiguo 09-01-2008
johnnySan johnnySan is offline
Registrado
 
Registrado: jun 2007
Posts: 9
Poder: 0
johnnySan Va por buen camino
Smile Alguin sabes como crear un stringgrid a modo de un DBgrid?

(no se por donde puedo enviar a todos este mensaje...)
Quiero que mi StringGrid sea al modo del DBGrig.
Es decir yo quiero que mi Stringgrid, sea al modo de el DBgrid, osea que las columnas se ajusten al modo del usuario usando el mouse,....al momento de ejecutarlo.
Por favor ayudenme en ese problemita.
Gracias.
Johnnysan
Responder Con Cita
  #12  
Antiguo 09-01-2008
johnnySan johnnySan is offline
Registrado
 
Registrado: jun 2007
Posts: 9
Poder: 0
johnnySan Va por buen camino
Smile

[quote=pcicom;227652]Prueba ESTO:

Yo trabajando en DBE , lleno datos en un stringgrid asi:

Código Delphi [-]procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var c:integer;begin
if Key=#13 then begin
query.sql.Closequery.sql.Clear;
query.SQL.Add(' SELECT ref, articulo, cantidad FROM articulos ');
query.SQL.Add('WHERE ref = '+QuotedStr(Edit1.Text) );
Open;
while not query.Eof do begin
StringGrid1.Cells[1,c]:=query.Fields[0].asstring; //campo de cantidad
StringGrid1.Cells[2,c]:=query1.Fields[1].asstring;//campo de articulo
inc(c);query.next; end;if c=1 then ShowMessage('Articulo no existe');
query.close; end;
end;
Pero en un ADO ,debe ser a ese estilo o... no se.
Responder Con Cita
  #13  
Antiguo 25-06-2008
magnus33 magnus33 is offline
Registrado
 
Registrado: jun 2008
Posts: 5
Poder: 0
magnus33 Va por buen camino
como llenar un stringgrid

y como hay que hacer para llenar un stringgrid utilizando solo un zconection y un zquery que estan en un datamodul esto es con el Zeos Access
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Imprimir Reporte Gráfico A Partir De Un Stringgrid jhoncacru Impresión 2 17-12-2006 17:19:31
llenar una tabla dbf con un query de mysql coletaun Varios 4 03-01-2006 22:04:14
TDBChart a partir de una Query jymy788 Varios 4 30-09-2004 16:50:00
generar html (tablas) a partir de query jymy788 Varios 2 28-09-2004 10:29:36
Como llenar este comboBox pzala Varios 2 14-12-2003 21:26:22


La franja horaria es GMT +2. Ahora son las 15:31:12.


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