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-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: 24
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
  #2  
Antiguo 02-09-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
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
  #3  
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: 24
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
  #4  
Antiguo 02-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
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
  #5  
Antiguo 02-09-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 28
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
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
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 10:44:17.


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