Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
ayuda error eof in string detected

Hola a todos este codigo uso para insertar datos en una tabla y me da error de eof in string detected que es lo que esta mal..
alguien me ayuda ?

gracias
Código Delphi [-]
 if(iCliente < 1) then
        sCliente := 'null'
    else
        sCliente := IntToStr(iCliente);
    with dmDatos.qryAuxiliar1 do begin
        Close;
        SQL.Clear;
        SQL.Add('INSERT INTO ventasareas (orden, articulo, codigo, descrip, cantidad, precio, tipo,categoria, fecha) VALUES(');
        SQL.Add(IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',' + grdDatos.Cells[1,iRenglon] + ',' + grdDatos.Cells[2,iRenglon] + ',' + grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',' + grdDatos.Cells[6,iRenglon] + ',');
           if(Length(grdDatos.Cells[10,iRenglon]) > 0) then
            SQL.Add(grdDatos.Cells[10,iRenglon] + ',')
        else
          SQL.Add('null,');
          SQL.Add('''' + QuotedStr(grdDatos.Cells[15,iRenglon]) + ')');
          ExecSQL;
          Close;
    end;
Responder Con Cita
  #2  
Antiguo 06-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo muy bien que pretendes con tanto add, pero si hace falta varios + si se añade un dato.
Código Delphi [-]
  SQL.Add('INSERT INTO ventasareas '+
  ' (orden, articulo, codigo, descrip, cantidad, precio, tipo,categoria, fecha)'+
  ' VALUES('+IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',' +
   grdDatos.Cells[1,iRenglon] + ',' + grdDatos.Cells[2,iRenglon] + ',' +
   grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',' +
   grdDatos.Cells[6,iRenglon] ')');

   if(Length(grdDatos.Cells[10,iRenglon]) > 0) then
   SQL.Add(','+ grdDatos.Cells[10,iRenglon] + ',')
   else
   SQL.Add(','null,');
   SQL.Add('''' + QuotedStr(grdDatos.Cells[15,iRenglon]) + ')');
   ExecSQL;
   Close;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 06-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
no funciona
grdDatos.Cells[6,iRenglon] ')'); <--- esta parte ahi no termina

QuotedStr(grdDatos.Cells[15,iRenglon]) + ')'); <--- aqui recien se cierra el parentisis

SQL.Add(','null,'); <-- aqui tambien esta mal

bueno de todas maneras me sigue saliendo eof in string detected

Responder Con Cita
  #4  
Antiguo 06-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tienes 9 campos a actualizar con la inserción.
(orden, articulo, codigo, descrip, cantidad, precio, tipo, categoria, fecha)
Tienes 7 campos en la sentencia insert.
Tiene la opcion de añadir 1 campo mas si cumple con el IF, de lo contrario acualiza los 9 campos.
Que quieres que entienda el programa????:::::
Un hermoso eof detected.
La unica manera que se me ocurre es usar tres sql en la misma linea.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 06-10-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Explicandolo con codigo:
Código Delphi [-]
  // inserto 7 campos
  SQL.Text:= 'INSERT INTO ventasareas '+
  ' (orden, articulo, codigo, descrip, cantidad, precio, tipo)'+
  ' VALUES('+IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',' +
   grdDatos.Cells[1,iRenglon] + ',' + grdDatos.Cells[2,iRenglon] + ',' +
   grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',' +
   grdDatos.Cells[6,iRenglon] +')';
   
   // Creo una condicion
   if(Length(grdDatos.Cells[10,iRenglon]) > 0) then
   begin
   // si se cumple inserto 8 campos
   SQL.Text:= 'INSERT INTO ventasareas '+
  ' (orden, articulo, codigo, descrip, cantidad, precio, tipo, categoria)'+
  ' VALUES('+IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',' +
   grdDatos.Cells[1,iRenglon] + ',' + grdDatos.Cells[2,iRenglon] + ',' +
   grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',' +
   grdDatos.Cells[6,iRenglon] + ',' + grdDatos.Cells[10,iRenglon] +')';
   end
   else
   begin
   // si no se cumple inserto 9 campos
    SQL.Text:= 'INSERT INTO ventasareas '+
  ' (orden, articulo, codigo, descrip, cantidad, precio, tipo, categoria, fecha)'+
  ' VALUES('+IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',' +
   grdDatos.Cells[1,iRenglon] + ',' + grdDatos.Cells[2,iRenglon] + ',' +
   grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',' +
   grdDatos.Cells[6,iRenglon] + ',' + grdDatos.Cells[10,iRenglon] + ',' +
   QuotedStr(grdDatos.Cells[15,iRenglon]) +')';
   end;
   ExecSQL;
   Close;
OJO hago ver que el dato fecha no coincidiría, pero asi es como lo tienes.
para mi se tendria que generar una condicion al inicio, de lo contrario hara el insert dos veces en este ejemplo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 07-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
este codigo funcionaba bien pero yo le quite uno que otro campo y lo deje como te lo enseñe pero bueno no se porque da error, aqui si funciona bien..
Código Delphi [-]
   with dmDatos.qryAuxiliar1 do begin
        Close;
        SQL.Clear;
        SQL.Add('INSERT INTO ventasareas (areaventa, orden, articulo, codigo, descrip, cantidad, precio, iva, tipo,');
        SQL.Add('descauto, descotorg, descfechas, descusuario, cliente, comprobante, categoria, departamento,');
        SQL.Add('comentario, fecha, vendedor, cantidad_cnt) VALUES(');
        SQL.Add(sAreaVenta + ',' + IntToStr(iRenglon) + ',' + grdDatos.Cells[0,iRenglon] + ',');
        SQL.Add('''' + grdDatos.Cells[1,iRenglon] + ''',''' + grdDatos.Cells[2,iRenglon] + ''',');
        SQL.Add(grdDatos.Cells[3,iRenglon] + ',' + grdDatos.Cells[4,iRenglon] + ',');
        SQL.Add(grdDatos.Cells[5,iRenglon] + ',' + grdDatos.Cells[6,iRenglon] + ',');
        SQL.Add('''' + grdDatos.Cells[7,iRenglon] + ''',' + grdDatos.Cells[8,iRenglon] + ',' + grdDatos.Cells[13,iRenglon] + ',');
        SQL.Add(grdDatos.Cells[9,iRenglon] + ',' + sCliente + ',''' + Copy(txtComprobante.Text,1,1) + ''',');
        if(Length(grdDatos.Cells[10,iRenglon]) > 0) then
            SQL.Add(grdDatos.Cells[10,iRenglon] + ',')
        else
            SQL.Add('null,');
        if(Length(grdDatos.Cells[11,iRenglon]) > 0) then
            SQL.Add(grdDatos.Cells[11,iRenglon] + ',')
        else
            SQL.Add('null,');
        SQL.Add('''' + grdDatos.Cells[14,iRenglon] + ''',' + QuotedStr(grdDatos.Cells[15,iRenglon]) + ',');
        SQL.Add(sVendedor + ',''' + grdDatos.Cells[16,iRenglon] + ''')');
        ExecSQL;
        Close;
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
Ayuda con string y numero GooD OOP 3 19-11-2008 16:44:02
Error al recorrer string creus Varios 6 16-11-2006 22:39:45
Ayuda con String Grid santiago14 Varios 1 04-11-2004 19:19:59
ayuda con string davidgaldo Varios 2 03-05-2004 20:37:51
A DeadLock was Detected jafl1965 SQL 4 16-10-2003 15:33:44


La franja horaria es GMT +2. Ahora son las 02:58:48.


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