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 29-08-2007
juangabriel1786 juangabriel1786 is offline
Miembro
 
Registrado: ene 2006
Posts: 38
Poder: 0
juangabriel1786 Va por buen camino
Red face Como isertar datos sin usar DBedit

Me gustaria saber como isertar datos sin usar DBedit en la base de datos, intente con esto

Código Delphi [-]
Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;

pero me da un error al tratar de guardar los datos con esto

Código Delphi [-]
Tunidades.Edit;
  Tunidades.Post;
  Tunidades.Insert;
  Tunidades.Edit;

row cannot be located for updating, some values may have been changed since it was last read


La base de datos es Mysql usando ADO

este es el procedure de mi boton: que a la vez guarda y actualiza


Código Delphi [-]
procedure TFunidades.Button1Click(Sender: TObject);
var
   s:String;
begin
  s:='';
  //seleccionamos el campo activo o inactivo
  if RadioGroup1.ItemIndex = 0 then
       s:= 'A'
  else
       s:= 'I';
  DBactivo.Text:=s;
  
//aqui se guarda en la base de datos
  Tunidades.Edit;
  Tunidades.Post;
  Tunidades.Insert;
  Tunidades.Edit;

   //aqui estoy tratando de usignar datos a la base de datos, a parte de los datos que se asignan en el form
  
   Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;}


  //conteo para llevar el codigo de la unidades contabilizado
  conteo:=conteo + 1;
  Tunidades.FieldByName('cod_unidad').Value:=conteo;

   DBedit2.SetFocus;

  showmessage('El registro se guardo satisfactoriamente');

end;

Última edición por juangabriel1786 fecha: 29-08-2007 a las 21:42:37.
Responder Con Cita
  #2  
Antiguo 29-08-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola

¿Podrías colocar el código exacto de como es que realizas los procesos?

Así como lo pones, no se puede identificar nada.

PD, trata de utilizar las etiquetas delphi para que el código se vea mejor

No es lo mismo esto:

Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
Tunidades.FieldByName('usuario_registro').Value:=usuario;
Tunidades.FieldByName('usuario_modificacion').Value:=usuario;

que esto:

Código Delphi [-]
 
   Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #3  
Antiguo 29-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
El código debe ser así
Código Delphi [-]
TUnidades.Edit;

    Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;

TUnidades.Post; // aquí se guardan los registros

Si lo que quieres es agregar un nuevo registros, entonces cambia la primera línea "TUnidades.Edit;" por "TUnidades.Insert"

El procedimiento "Edit" es para editar un registro ya existente, y el "Insert" es para agregar un nuevo registro en blanco.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 29-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
Hola...

primero que nada... podrias echarte un vistaso por guia de estilo

podrias aclarar que base de datos utilizas.. y que programa

si quieres almacenar datos en una tabla.. sin usar un DBEdit, te sugiero que realices una sentencia Query

por Ejm, quieres insertar una registro a la tabla Ciuda, la cual tiene los sgtes campos, Ciu_Codigo, Ciu_Nombre, Ciu_Region, todos estos campos son de tipo Varchar, y estan definidos pos TEdit

ponemos un componente de tipo Query (depende del tipo de base, será el que necesites), llamano QCiudad
el query para esto seria algo así

Código Delphi [-]
QCiudad.Close;
QCiudad.Sql.Clear;
QCiudad.Sql.Add('Insert Into Ciudad(Ciu_Codigo, Ciu_Nombre, Ciu_Region)');
QCiudad.Sql.Add('Values (:Var1, :Var2, Var3, Var4)');
QCiudad.Params[0].AsString := sCiu_Codigo.Text;
QCiudad.Params[1].AsString := sCiu_Nombre.Text;
QCiudad.Params[2].AsString := sCiu_Region.Text;
QCiudad.ExecSQl;

Con esto deberias tener como ejemplo.. si tiene un error, es por que lo hice así de memoria.. (y como la mia es fragil...)....

pero como te dije.. necesitas dar más información... espero que te sirva
__________________
BlueSteel
Responder Con Cita
  #5  
Antiguo 29-08-2007
juangabriel1786 juangabriel1786 is offline
Miembro
 
Registrado: ene 2006
Posts: 38
Poder: 0
juangabriel1786 Va por buen camino
Red face

Realmente las unidades se registran en un form, y hay un boton que llama
a un formulario de busquedas de unidades,y si es necesario actualizar los registros
se actulizan, anteriormente en mi proyecto, asignaba datos, de la siguiente manera


Código Delphi [-]
DBfecha.Text:=DateToStr(Date);
   DBedit3.Text:=DateToStr(Date);
   DBusuario.Text:=usuario;
   DBedit4.Text:=usuario;

estos datos estaban asignados a los DBEDIT que tenian la opcion VISIBLE:=false, porque son
datos que los usuarios no pueden ver,pero es algo poco profecional, y por eso necesito una
forma de insertar datos a la tabla sin usar DBEDIT

Este codigo no es factible, ya que genera otro error.

Código Delphi [-]
TUnidades.Edit;

   Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;

TUnidades.Post;

Por cierto uso mysql utilizando ADO

Última edición por juangabriel1786 fecha: 29-08-2007 a las 21:27:08.
Responder Con Cita
  #6  
Antiguo 29-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
viendo las respuestas que te han dado, coincido con egostar, es muy dificil analizar lo que quieres sin los datos necesarios.
Hay muchas maneras de hacer esto, tambien depende de la base de datos, ejemplos:
Código Delphi [-]
 Tunidades.FieldByName('fecha_registro').AsDate:=DateTimePicker1.Date;
   Tunidades.FieldByName('fecha_modificacion').AsDate:=DateTimePicker1.Date;
   Tunidades.FieldByName('usuario_registro').AsString:=Edti1.Text;
   Tunidades.FieldByName('usuario_modificacion').AsString:=Edtit2.Text;
Otra:
Código Delphi [-]
Tunidades.Fields[0].AsDate:=DateTimePicker1.Date;
Tunidades.Fields[1].AsDate:=DateTimePicker1.Date;
Tunidades.Fields[2].AsString:=Edti1.Text;
Tunidades.Fields[3].AsString:=Edtit2.Text;
Otra y la mas adecuada, con sql:
Código Delphi [-]
 AdoQuery1.SQL.Text := 'Insert into TuTabla Values ( '+Edit1.Text+ ', '+QuotedStr(Edti2.Text)+', '+QuotedStr(Edti3.Text)+', '+                                        DateToStr(DateTimePicker1.Date)+')';
AdoQuery1.ExecSQL;
Bueno son ideas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 29-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Que tipo de error te da el código que te he dado?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 29-08-2007
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
El código que has colocado está mal,
Código Delphi [-]
procedure TFunidades.Button1Click(Sender: TObject);
var
   s:String;
begin
  s:='';
  //seleccionamos el campo activo o inactivo
  if RadioGroup1.ItemIndex = 0 then
       s:= 'A'
  else
       s:= 'I';
  DBactivo.Text:=s;
  
//aqui se guarda en la base de datos
  Tunidades.Edit;
  Tunidades.Post;
  Tunidades.Insert;
  Tunidades.Edit;

   //aqui estoy tratando de usignar datos a la base de datos, a parte de los datos que se asignan en el form
  
   Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;}


  //conteo para llevar el codigo de la unidades contabilizado
  conteo:=conteo + 1;
  Tunidades.FieldByName('cod_unidad').Value:=conteo;

   DBedit2.SetFocus;

  showmessage('El registro se guardo satisfactoriamente');

end;

Antes de mostrar el mensaje que "los registros se han guardado satisfactoriamente"
primero debes de llamar a POST.

debería de quedarte algo así
Código Delphi [-]
procedure TFunidades.Button1Click(Sender: TObject);
var
   s:String;
begin
  s:='';
  //seleccionamos el campo activo o inactivo
  if RadioGroup1.ItemIndex = 0 then
       s:= 'A'
  else
       s:= 'I';
  DBactivo.Text:=s;
  
//aqui se guarda en la base de datos
{Primero, debes de saber lo que quieres hacer, si es
MODIFICAR o AGREGAR un registro}

// si quieres modificar un registro, con esto es suficiente.
  Tunidades.Edit;

// si quieres agregar un nuevo registro, este sería el código:
  TUnidades.Insert;

   //aqui estoy tratando de usignar datos a la base de datos, a parte de los datos que se asignan en el form
  
   Tunidades.FieldByName('fecha_registro').Value:=DateToStr(Date);
   Tunidades.FieldByName('fecha_modificacion').Value:=DateToStr(Date);
   Tunidades.FieldByName('usuario_registro').Value:=usuario;
   Tunidades.FieldByName('usuario_modificacion').Value:=usuario;}


  //conteo para llevar el codigo de la unidades contabilizado
  conteo:=conteo + 1;
  Tunidades.FieldByName('cod_unidad').Value:=conteo;

  // con está línea guardas los cambios realizados
  TUnidades.Post;
  // si no pones la última línea, los cambios simplemente no serán guardados.
DBedit2.SetFocus;

  showmessage('El registro se guardo satisfactoriamente');

end;
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
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
Usar Block de notas como Base de Datos edelphi Conexión con bases de datos 2 31-01-2007 04:21:16
como usar un dbrowse con dbedit en la misma tabla mcantob C++ Builder 0 23-11-2006 19:47:34
Como usar DNS con Bases de datos ClaudioGVera Conexión con bases de datos 0 13-05-2005 21:36:52
como enlazo una base de datos acces con un DBEdit Bitbanner Conexión con bases de datos 1 17-01-2005 18:42:51
como validar datos en el evento onkeypress de un dbedit? viajero2015 Varios 1 01-02-2004 21:41:59


La franja horaria es GMT +2. Ahora son las 21:01:08.


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