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 24-08-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
Problema Consulta Insert into...

Hola Compañeros del foro, codigo:

Código Delphi [-]
QHistorico.Close;
   QHistorico.SQL.Add('insert into historico values');
   QHistorico.SQL.Add('("", "'+DBEdit13.Text+'")');
   QHistorico.Open;
   QHistorico.ExecSQL;

error:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Sigesped.exe raised exception class EOleException with message 'Number of query values and destination fields are not the same'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
eso quiere decir que los values tiene que ir en el mismo orden que esta en la base de datos?.

Saludos...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #2  
Antiguo 24-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Cuando haces un insert sin especificar los campos, los valores que pasas deben ir en el orden en que están los campos de la tabla y debes incluir todos y cada uno de los valores:

Código SQL [-]
create table historico (
  id Integer,
  descripcion varchar(30)
);

insert into historico values(1, 'Primer histórico');

/* La sentencia anterior equivale a: */
insert into historico (id, descripcion) values(1, 'Primer histórico');


Saludos...
Responder Con Cita
  #3  
Antiguo 24-08-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Seguramente la tabla historico tiene mas campos de los que estas tratando de insertar, de manera pues que creo que lo mejor es que le indiques el nombre de los campos que deseas insertar, asi:

Código Delphi [-]
   QHistorico.Close;
   QHistorico.SQL.Add('insert into historico (NombreDelCampoVacio, NombreDelOtroCampo) values');
   QHistorico.SQL.Add('("", "'+DBEdit13.Text+'")');
   QHistorico.ExecSQL;

Otra cosa, quitale el QHistorico.Open; ya que con el ExecSql; ya sera suficiente, ademas puede causarte problemas mas adelante.

Espero te sirva .

//Nota: Caramba¡¡¡ casi que iguales maeyanes
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 24-08-2007 a las 19:09:02. Razón: Escribir nota
Responder Con Cita
  #4  
Antiguo 24-08-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
tambien te falta hacer un limpiado del SQL.. por si queda algo, esto lo haces despues de

Código Delphi [-]
QHistorico.Close;
QHistorico.Sql.Clear;
QHistorico.Sql.Add( // y asi 
QHistorico.ExecSql;
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 24-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Aparte que si ese componente solo sirve para insertar historicos, no necesita llamar al evento Close, ya que ExecSQL no devuelve ningún tipo de record set...

Código Delphi [-]
QHistorico.SQL.Clear;
QHistorico.SQL.Add('insert into Historico values');
//...
QHistorico.ExecSQL;

Saludos..
Responder Con Cita
  #6  
Antiguo 24-08-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 a todos, el codigo quedo asi de acuerdo a sus sugerencias:

Código Delphi [-]
 QHistorico.SQL.Clear;
   QHistorico.SQL.Add('insert into historico (id, no, no_ped, dpto, responsable, fecha_rec_ped, status, user, date) values');
   QHistorico.SQL.Add('("", "'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+'", "'+DBLookupComboBox8.Text+'", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+'", "'+DBEdit17.Text+'")');
   QHistorico.ExecSQL;

nuevo error:

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Sigesped.exe raised exception class EOleException with message 'Syntax error in INSERT INTO statement'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 24-08-2007
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
La primera coma del principio esta de mas

Cita:
Empezado por enecumene Ver Mensaje

Código Delphi [-]
    QHistorico.SQL.Add('("", "'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+'", "'+DBLookupComboBox8.Text+'", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+'", "'+DBEdit17.Text+'")');
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 24-08-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 Caro por tu respuesta, segun tu sugerencia quedaria asi:

Código SQL [-]
QHistorico.SQL.Add('("" "'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+'", "'+DBLookupComboBox8.Text+'", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+'", "'+DBEdit17.Text+'")');

si es asi aun me tira el mismo error.

Saludos...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #9  
Antiguo 24-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que vamos a hacer con tigo enecumene, no nos das datos suficientes.
Recuerda que hay diferentes tipos de campos, texto, numericos etc.
La inserción tiene que ser en base al tipo de campo por que estas concatenando.
Pregunto:
Que tipo de campo va a incluir cada uno de estos:
DBEdit18.Text
DBEdit7.Text
DBLookupComboBox6.Text
DBLookupComboBox8.Text
DBEdit15.Text
DBLookupComboBox1.Text
DBEdit16.Text
DBEdit17.Text
Puedo asegurar sin temor a equivocarme que mas de uno de estos debe de ser numerico.
Me explicas esto?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 24-08-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
disculpa Caral todos los campos son tipos Textos. el unico que es numerico y es autoincrement es "id"...
mira mi codigo completo por si acaso:

Código Delphi [-]
procedure TFPedidoMod.BitBtn2Click(Sender: TObject);
begin
FConsPed.TbPedido.Edit;
if MessageDlg('¿Está seguro que desea Guardar?', mtConfirmation,
       [mbYes, mbNo], 0) = mrYes then
   begin
   FConsPed.TbPedido.Post;
   QHistorico.SQL.Clear;
   QHistorico.SQL.Add('insert into historico (id, no, no_ped, dpto, responsable, fecha_rec_ped, status, user, date) values');
   QHistorico.SQL.Add(' ("", "'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+'", "'+DBLookupComboBox8.Text+'", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+'", "'+DBEdit17.Text+'")');
   QHistorico.ExecSQL;
   MessageDlg('Los Datos se grabaron exitosamente!',mtError,[mbOK],0);
   Free;
   end;
end;

Saludos...
__________________

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

Última edición por enecumene fecha: 24-08-2007 a las 20:26:26.
Responder Con Cita
  #11  
Antiguo 24-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Se que me engañas, lo veo en mi pantallita mágica.
Me vas a decir que estos son tipo texto?
Código Delphi [-]
fecha_rec_ped
date
Crees que se necesite insertar el campo autoincrement?
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 24-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Si el campo Id es autoincremental, no veo la necesidad de usarlo en el insert into...

Código Delphi [-]
QHistorico.SQL.Add('insert into historico (no, no_ped, dpto, responsable, fecha_rec_ped, status, user, date) values');
QHistorico.SQL.Add(' ("'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+'", "'+DBLookupComboBox8.Text+
  '", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+'", "'+DBEdit17.Text+'")');

Caral, el que el nombre de campo indique que es tipo fecha (date), no significa que así haya sido declarado en la base de datos. Si enecumene dice que fue declarado como un tipo string habremos de creerle...


Saludos...
Responder Con Cita
  #13  
Antiguo 24-08-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
Disculpen la tardanza:

Caral

Cita:
Hola
Se que me engañas, lo veo en mi pantallita mágica.
Me vas a decir que estos son tipo texto?
en la base de datos esta declarado como string.

maeyanes

Cita:
Si el campo Id es autoincremental, no veo la necesidad de usarlo en el insert into...
aun quitando el campo id del insert into el error aun persiste.

Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project Sigesped.exe raised exception class EOleException with message 'Syntax error in INSERT INTO statement'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #14  
Antiguo 24-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
A simple vista no se ve el error...

Por que no intentas esto:

Agrega un componente TMemo en la forma donde usas esta instrucción y haces lo siguiente:

Código Delphi [-]
procedure TFPedidoMod.BitBtn2Click(Sender: TObject);
begin
  FConsPed.TbPedido.Edit;
  if MessageDlg('¿Está seguro que desea Guardar?', mtConfirmation,
    [mbYes, mbNo], 0) = mrYes then
  begin
    FConsPed.TbPedido.Post;
    QHistorico.SQL.Clear;
    QHistorico.SQL.Add('insert into historico (id, no, no_ped, dpto, responsable, fecha_rec_ped, status, user, 
      date) values');
    QHistorico.SQL.Add(' ("", "'+DBEdit18.Text+'", "'+DBEdit7.Text+'", "'+DBLookupComboBox6.Text+
      '", "'+DBLookupComboBox8.Text+'", "'+DBEdit15.Text+'", "'+DBLookupComboBox1.Text+'", "'+DBEdit16.Text+
      '", "'+DBEdit17.Text+'")');
    Memo1.Text := QHistorico.SQL.Text; // Agregas esta línea...
    QHistorico.ExecSQL;
    MessageDlg('Los Datos se grabaron exitosamente!',mtError,[mbOK],0);
    Free;
  end;
end;

Luego copias el texto que resultó en el TMemo y nos lo pones aquí...

Algo me dice que el error está en el insert ya formado...


Saludos...
Responder Con Cita
  #15  
Antiguo 24-08-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Y Asi?
Código Delphi [-]
   procedure TFPedidoMod.BitBtn2Click(Sender: TObject);
   begin
   if MessageDlg('¿Está seguro que desea Guardar?', mtConfirmation,
       [mbYes, mbNo], 0) = mrYes then
   begin
   QHistorico.SQL.Text:= 'Insert Into historico (no, no_ped, dpto, responsable, fecha_rec_ped, status, user, date)'+
                         ' values ('+QuotedStr(DBEdit18.Text)+', '+QuotedStr(DBEdit7.Text)+', '+QuotedStr(DBLookupComboBox6.Text)+', '+QuotedStr(DBLookupComboBox8.Text)+', '+QuotedStr(DBEdit15.Text)+', '+QuotedStr(DBLookupComboBox1.Text)+', '+QuotedStr(DBEdit16.Text)+', '+QuotedStr(DBEdit17.Text)+')';
   QHistorico.ExecSQL;
   MessageDlg('Los Datos se grabaron exitosamente!',mtError,[mbOK],0);
   end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #16  
Antiguo 24-08-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
maeyanes, esta linea me deberia salir? porque cuando el error me sale todo queda detras y se friza y no me permite ver nada...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #17  
Antiguo 24-08-2007
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Para que no te de el error, comenta la línea de QHistorico.ExecSQL, así al hacer click en el botón, generas la sentencia insert sin ejecutarla.


Saludos...
Responder Con Cita
  #18  
Antiguo 24-08-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
Me presenta el mismo error, no se si sirve de algo la linea de error que me tira el ADODB:

Código SQL [-]
function TADOCommand.Execute(var RecordsAffected: Integer;
  const Parameters: OleVariant): _Recordset;
var
  VarRecsAffected: OleVariant;
begin
  SetConnectionFlag(cfExecute, True);
  try
    Initialize;
    Result := CommandObject.Execute(VarRecsAffected, Parameters, <---AQUI
      Integer(CommandObject.CommandType) + ExecuteOptionsToOrd(FExecuteOptions));
    RecordsAffected := VarRecsAffected;
  finally
    SetConnectionFlag(cfExecute, False);
  end;
end;
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #19  
Antiguo 24-08-2007
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
hola enecumene


comenta las lineas

del QHistorico.SQL.Text := 'inser... etc


y bguadra todo en una variable string,


dibujate un memo y ahi
has esto

memo1.text := myCadenadeSQLInsert;


y ve sie sta bien generado tu sentencia y haber en donde esta mal
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #20  
Antiguo 24-08-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
Cita:
Empezado por Paoti Ver Mensaje
hola enecumene


comenta las lineas

del QHistorico.SQL.Text := 'inser... etc


y bguadra todo en una variable string,


dibujate un memo y ahi
has esto

memo1.text := myCadenadeSQLInsert;


y ve sie sta bien generado tu sentencia y haber en donde esta mal
disculpa paoti no entendi, de veras que no y disculpame, me podrias dar un ejemplo?. Gracias...
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
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
problema con un insert darkclow_juliga Conexión con bases de datos 1 05-12-2006 11:40:33
Problema con Insert joanajj Conexión con bases de datos 1 01-05-2006 08:11:40
Problema con Insert y Update en ADOQuery Moises22 SQL 15 11-01-2006 07:57:13
Problema con insert Ivan_25 C++ Builder 7 04-11-2005 10:38:34
consulta sobre insert davidgaldo SQL 1 14-04-2004 14:08:02


La franja horaria es GMT +2. Ahora son las 16:59:56.


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