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 22-04-2005
kryna kryna is offline
Miembro
 
Registrado: mar 2005
Posts: 46
Poder: 0
kryna Va por buen camino
insert que no funciona

hola!!!

mi problema consiste en que esoy insertando registros en tablas paradox(son 3)
y en la tabla no me lo esta insertando como deberia me esta sbreescribiendo el registro anterior.. me explico

cuando inserto el registro 1 me lo copia en la fila cuyo indice numero1
cuando inserto el registro 2 me lo copia en la fila cuyo indice es numero 2 pero tambien el la fila anterior (osea la fila 1)..
cuando inserto el registro 3 me lo copia en la fila cuyo indice es numero 3 pero tambien el la fila anterior (osea la fila 2)...
osea me lo copia en la fila ql corresponde y tambien el la fila anterior..
Código:
 if not Tbconcepto.active then Tbconcepto.open;
Tbconcepto.Insert;
Tbconcepto.FieldByName('cod_concepto').AsString := clave5;
Tbconcepto.FieldByName('cod_especialidad').AsString := clave;
Tbconcepto.FieldByName('descripcion_concepto').AsString := clave3;
  try
	Tbconcepto.Post;
  except
	Showmessage('Error insertando registro');
  end;
Tbconcepto.FlushBuffers;
Tbconcepto.Close;
if not Tbcostos.active then Tbcostos.open;
Tbcostos.Insert;
Tbcostos.FieldByName('cod_concepto').AsString := clave5;
Tbcostos.FieldByName('costo').AsString := clavem;
Tbcostos.FieldByName('fecha').AsString := clavef;
try
	Tbcostos.Post;
  except
	Showmessage('Error insertando registro');
  end;
Tbcostos.FlushBuffers;
Tbcostos.Close;
if not Tbespecialidad.active then Tbespecialidad.open;
Tbespecialidad.Insert;
Tbespecialidad.FieldByName('cod_especialidad').AsString := clave;
Tbespecialidad.FieldByName('descripcion_especialidad').AsString := clave4;
Tbespecialidad.FieldByName('orden').AsString := claveo;
Tbespecialidad.FieldByName('nota').AsString := claven;
try
	Tbespecialidad.Post;
  except
	Showmessage('Error insertando registro');
  end;
Tbespecialidad.FlushBuffers;
Tbespecialidad.Close;
A otra cosa estoy usando entes de la insercion un Tquery para verificar si existe o no el registro..

kryna
Responder Con Cita
  #2  
Antiguo 22-04-2005
Nelson Polanco Nelson Polanco is offline
Miembro
 
Registrado: abr 2005
Ubicación: Provincia Espaillat, Rep. Dom.
Posts: 15
Poder: 0
Nelson Polanco Va por buen camino
No se que consulta en tu query y esos valores que le pasas a los campos no se si los tendra claro pero esto que sigue debe funcionar.

if not Tbconcepto.active then
Begin
Tbconcepto.open;
Tbconcepto.Insert;
Tbconcepto.FieldByName('cod_concepto').AsString := "A5";
Tbconcepto.FieldByName('cod_especialidad').AsString := "Esp. A5";
Tbconcepto.FieldByName('descripcion_concepto').AsString := "Esta es la Especialidad";
Tbconcepto.Post;
End;
Debes usar Begin ... End; para una mejor logica de tus codigos.

Suerte.
Nelson Polanco
Rep. Dom.
Responder Con Cita
  #3  
Antiguo 22-04-2005
kryna kryna is offline
Miembro
 
Registrado: mar 2005
Posts: 46
Poder: 0
kryna Va por buen camino
hola nelson

ya probe como me sugeristes y tampoco me funciona...
matiene el mismo error..

no se que debo hacer tengo ya algunos dias con este problema
Responder Con Cita
  #4  
Antiguo 22-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Por qué no creas la tabla de nuevo, el código de Nelson es perfecto y el tuyo también debiera de funcionar.

Sino te da ningún error tendría que añadir un registro sin más problema.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 22-04-2005
migvaz5 migvaz5 is offline
Registrado
 
Registrado: abr 2005
Posts: 4
Poder: 0
migvaz5 Va por buen camino
La tabla necesita estar pocisionada en el ultimo registro

Antes de poner el insert utiliza la funcion last de la tabla par que antes de insertar en ella se pocisione en el ultimo registro y asi inserte en ese.

O tambien puedes utilizar la funcion append
Responder Con Cita
  #6  
Antiguo 22-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No es necesario utilizar, Last, precisamente en algunas tablas esta instrucción es distinta a Append, porque lo que hace es eso insertar entre la fila quen os encontramos y la siguiente.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 22-04-2005
Dimanu Dimanu is offline
Miembro
 
Registrado: abr 2005
Posts: 10
Poder: 0
Dimanu Va por buen camino
Solución a sentencia Insert.

Hola Amigo delphiniano, te cuento que no debes utilizar la sentencia Insert sino la sentencia Append ya que el Insert debe averiguar primero la posicion a insertar la nueva tupla entre otras cosas y eso es tiempo...te recomiendo lo siguiente:

ntabla.open; //cuando abro la tabla se posiciona el 1er. registro
ntabla.append; //habilito nuevo al final
ntabla.fieldbyName('xfield1').asString := xValor1; //dato nro1.
ntabla.fieldbyName('xfield2').asString := xValor2;
ntabla.fieldbyName('xfield3').asString := xValor3;
ntabla.post; //luego de que grabo la tabla vuelve al estado dsBrowse

A estas sentencias la puede llamar desde un bucle o hacer un proc y pasarle parametros, etc..
__________________
Diego
Responder Con Cita
  #8  
Antiguo 22-04-2005
kryna kryna is offline
Miembro
 
Registrado: mar 2005
Posts: 46
Poder: 0
kryna Va por buen camino
Hola!!

Ya cree de nuevo las tablas...

Le coloce tb.last a cada una de las tablas.. y si me graba el registro en la ultima fila.. pero alguno valores (mejor dicho todos menos los campos comunes en las tabla) se graban tambien en la primera fila de las tablas..

porfa yo se que no debiera estar haciendo eso pero si lo hace

estoy desesperada
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


La franja horaria es GMT +2. Ahora son las 12:17:30.


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