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 27-06-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Question Problemillas al intentar insertar registros

Holas a todos, bueno estoy tratando de leer un archivo de texto que tiene registros y estos a medida de irlos leyendo traspasarlos a una tabla de interbase. He intentado con varias variantes del siguiente código

Código Delphi [-]

procedure TForm1.dxButton1Click(Sender: TObject);
var
  openDialog : TOpenDialog;
  myFile : TextFile;
  estado : variant;
  text   : string;
  cadena,n1,n2 : String;
  n3 : integer;
  numinv  : boolean;
  vficha : integer;
  vnombre : string;
  vRut : string;
  vsueldo : integer;
  vdigvernum : integer;
  vdigverstr : string;
  begin 
  openDialog := TOpenDialog.Create(self);
  opendialog.InitialDir := 'F:\junio_2006.txt';
  openDialog.Options := [ofFileMustExist];
  openDialog.Filter :=
  'Archivos de texto|*.txt|Todos loa archivos|*.*';
  openDialog.FilterIndex := 2;
  if openDialog.Execute
  then
      begin
      LMDEdit5.Text := opendialog.FileName;
      end
      else ShowMessage('La operacion de apertura de archivo fue cancelada !!');
openDialog.Free;
Assignfile(myFile, LMDEdit5.text);
Reset(myFile);

while not Eof(myFile) do
  begin 
    vficha := 0;
    vnombre :='';
    vrut :='';
    ReadLn(myFile, n1);
    n2 := Trim(n1);
    n3 := length(n2);
    cadena := (Copy(n2, 1, 1));

    If (isinteger(cadena)) then
       begin
          If (n2<>'')and((n3=41)or(n3=42)or(n3=43)or(n3=9)or(n3=10)or(n3=11)) then
          begin
          if (n3>10) then
              begin
              vficha:=strtoint(trim(copy(n2,1,2)));
              delete(n2,1,3);
              trimleft(n2);
              n3 := length(n2);
              vrut := (copy(n2,n3-10,11));
              trim(vrut);
              n2 := copy(n2,1,29);
              vnombre := copy (n2,1,28);
               vnombre := n2;
                query1.close;
                query1.sql.Clear;
                query1.SQL.Add('Insert into tabla (ficha,nombre,rut,sueldo)');
                query1.sql.add('values(:nficha,:nnombre,:nrut,:nsueldo)');
                query1.ParamByName('nficha').AsInteger := vficha;
                query1.ParamByName('nnombre').asString  := vnombre;
                query1.parambyName('nrut').AsString := vrut;
                query1.ParamByName('nsueldo').AsInteger := vsueldo;
                query1.ExecSQL;
               

              //showmessage('ficha='+ inttostr(vficha) + ' nombre='+vnombre + ' rut=' + vrut);
              vficha := 0;
              vnombre:='';
              vrut := '';
              end;
         end;
        end;
   end; 
closefile(myFile);
end;

Como pueden ver, primero pido el archivo a leer, luego voy tomando los datos y los separo en las variables que luego quiero guardar en la tabla.

Las variables a guardar son ficha, nombre,rut y sueldo.

A Todos gracias de antemanos por sus consejos y ayudas.
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #2  
Antiguo 27-06-2006
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Poder: 19
JCarlosas Va por buen camino
Para dar una mejor idea de lo que te sucede creo que seria conveniente que explicaras que error te da o si es que simplemente no te inserta.
Seria bueno tambien que obtuvieras la cadena SQL ya completamente construida. Y nos la pusieras en el texto para poder analizarlo todo con mas detalles.
Saludos
Juan Carlos
Responder Con Cita
  #3  
Antiguo 28-06-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Esta es la cedena de insercion para el sql

Código Delphi [-]
                query1.close;
                query1.sql.Clear;
                query1.SQL.Add('Insert into tabla (ficha,nombre,rut,sueldo)');
                query1.sql.add('values(:nficha,:nnombre,:nrut,:nsueldo)');
                query1.ParamByName('nficha').AsInteger := vficha;
                query1.ParamByName('nnombre').asString  := vnombre;
                query1.parambyName('nrut').AsString := vrut;
                query1.ParamByName('nsueldo').AsInteger := vsueldo;
                query1.ExecSQL;

Tal vez exista una mejor manera de insertar ........
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #4  
Antiguo 28-06-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Revisaste con el Depurador (F8) que las variables estan tomando los valores de los campos del archivo texto?
A Vsueldo que valor le estas asignando?
Prueba colocar un Commit despues del EXecSQL

Suerte
Responder Con Cita
  #5  
Antiguo 28-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues no estaría de más saber el error que te dá, o qué problemas tienes.

De momento veo varias insconsistencias:
preguntas si n3=9 ó n3=10, pero despues dices si n3>10 haz la inserción ¿? ¿para qué quieres esas 2 condiciones?

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 28-06-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Cuando intento leer el archivo de textos me lanza el siguiente error

"General SQL error, arithmetic exception, numeric overflow, or string truncation"

He revisado el valor de las variables anteponiendo a la sentencia sql unos showmessage, y los valores de las variables son los correctos.....

O sea en la sentencia SQL debo tener el problema.... o tal vez la manera de ejecutar la insersion....

Ojala alguien me pueda ayudar a como resolverlo.... gracias de antemanos...
__________________
[Lo que a veces es tan facil, a veces parece imposible]
Responder Con Cita
  #7  
Antiguo 28-06-2006
ilichhernandez ilichhernandez is offline
Miembro
 
Registrado: oct 2005
Posts: 277
Poder: 19
ilichhernandez Va por buen camino
Encontre el error, resulta que intentaba insertar una cadena de 11 caracteres en una campo de 10 entonces en ese punto se caia..... bueno gracias por todas las ayudas... siempre ayudan mucho....

Gracias !!!
__________________
[Lo que a veces es tan facil, a veces parece imposible]
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
Como insertar registros con sql? newbery Firebird e Interbase 1 10-01-2006 14:32:30
Problema al insertar registros en una BD epalacios SQL 4 07-06-2005 19:11:16
Insertar registros en MySQL TONIAM MySQL 0 24-05-2005 15:47:49
Insertar 8 millones de registros en interbase... nacho Firebird e Interbase 11 17-02-2005 21:34:01
Problemas al insertar registros con ADO sanluisme Conexión con bases de datos 0 04-03-2004 10:34:41


La franja horaria es GMT +2. Ahora son las 04:17:52.


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