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
  #7  
Antiguo 07-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
alguna idea ? 8-)
Responder Con Cita
  #8  
Antiguo 08-10-2010
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.235
Poder: 20
ElKurgan Va camino a la fama
Cita:
Empezado por Rofocale Ver Mensaje
Código Delphi [-]

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
....

A lo mejor me equivoco, pero si el código que tienes es el que muestras, no puedes terminar una sentencia insert como está escrita, con una coma.

Prueba con esto, a ver si va:

Código Delphi [-]
       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] );

Un saludo
Responder Con Cita
  #9  
Antiguo 09-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
no funciona
Responder Con Cita
  #10  
Antiguo 13-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
Hola nadie puede hecharme una mano ?
porque este codigo si funciona

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;


y este no


Código Delphi [-]
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;


algun error con las comas o algo ?
espero ayuda
gracias
Responder Con Cita
  #11  
Antiguo 13-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
Lo unico que se ve, comparandolo con el primero:
Código Delphi [-]
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;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #12  
Antiguo 15-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
porfavor me puedes explicar como van eso de las comillas unas que van asi '''' y otras asi ''',' y realmente solo he visto ',' estas y no se porque van las otras..
ojala puedas ayudarme

gracias
Responder Con Cita
  #13  
Antiguo 15-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
por otro lado el codigo me da error token unknown line 2 clolumn 1
,'.
a que se debe ?
Responder Con Cita
  #14  
Antiguo 15-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Rofocale Ver Mensaje
porfavor me puedes explicar como van eso de las comillas unas que van asi '''' y otras asi ''',' y realmente solo he visto ',' estas y no se porque van las otras..
ojala puedas ayudarme gracias
Hola Rofocale.

Se usan las comillas dobles cuando se quiere que uno o más caracteres queden entre comillas
dentro de una cadena. Por ejemplo si quisieramos que en la frase: habia una vez, la palabra una
quedase entre comillas, no podemos hacer: 'habia 'una' vez', Delphi interpretaría: [un string]
[un identificador,variable, etc] [un string].

Para indicarle a Delphi que la palabra una va entre comillas, tenemos que hacer: 'había ''una'' vez',
lo que nos dá: habia 'una' vez.

Particularmente para introducir caracteres entre comillas, uso la función QuotedStr, me resulta más
legible y tiene el mismo resultado.

Un ejemplo con los dos usos:
Código Delphi [-]
  Cadena:= 'había ''una'' vez';
  Cadena:= 'había '+QuotedStr('una')+' vez'

Saludos.

Última edición por ecfisa fecha: 15-10-2010 a las 04:34:56.
Responder Con Cita
  #15  
Antiguo 15-10-2010
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 15
Rofocale Va por buen camino
gracias..

ahora alguien me podria ayudar el porque me sale toke unknown ,'.

gracias
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 09:52:46.


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