PDA

Ver la Versión Completa : Insertar registro en acces


jgmarduel
02-09-2005, 17:58:10
Soy supernovato y pongo este código sin resultado ni error. Alguien me podría orientar ?? Aceptaría con gusto especificaciones para Mod y Delete.


procedure TForm2.BitBtn2Click(Sender: TObject);
var
estado: Boolean;
begin
estado := False;
if Form2.CheckBox1.State = cbChecked then
begin
estado := True;
end;
Database1.Connected := True;
DataSource1.Enabled := True;
Table1.Active := True;
Table1.Open;
Table1.Insert;
Table1.FieldByName('Titulo').AsString := Form2.Edit1.Text;
Table1.FieldByName('Arancelado').AsBoolean := estado;
Table1.Post;
Table1.Close;
Table1.Active := False;
DataSource1.Enabled := False;
Database1.Connected := False;
end;

MasterXP
02-09-2005, 18:25:16
no entiendo, cual es el problema?

jgmarduel
02-09-2005, 19:00:57
no inserta el registro, ni tira ningún error.

vtdeleon
03-09-2005, 00:40:00
Saludos

Puede ser que tenga la propiedad CacheUpdate en True.:-S

Trata de hacer un ApplyUpdate despues del post.

jgmarduel
03-09-2005, 00:52:22
gracias. No he encontrado mucho en los manuales que hay por ahí. Ponen en el cielo al BDGrid pero la mayoría de mis probables aplicaciones no dejarán ver las tablas a los clientes, sino que insertarán, modificarán y borraran en forms 'colgados' del principal.

Si conocen algo por favor avisen, ya que la respuesta a mi mensaje (muy rápida y gentil por cierto) trata de una función que no está en ninguno de los que encontré.
Gracias

vtdeleon
03-09-2005, 00:54:35
Saludos

Te resulto lo que te escribir?

jgmarduel
05-09-2005, 19:44:13
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Buttons, DBCtrls, DB, DBTables;

type
TForm2 = class(TForm)
Label1: TLabel;
Label2: TLabel;
GroupBox1: TGroupBox;
Label3: TLabel;
Label4: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Table1: TTable;
DataSource1: TDataSource;
Database1: TDatabase;
Edit1: TEdit;
GroupBox2: TGroupBox;
CheckBox1: TCheckBox;
Edit2: TEdit;
Label5: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure Hola(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Table1AfterInsert(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
close;
end;
procedure TForm2.Hola(Sender: TObject);
begin
Form2.DateTimePicker2.Enabled := True;
end;

procedure TForm2.BitBtn2Click(Sender: TObject);
var
estado: Boolean;
begin
estado := False;

if Form2.CheckBox1.State = cbChecked then
begin
estado := True;
end;

Database1.Connected := True;
end;

No hay caso. Este es el cod actual:


DataSource1.Enabled := True;
Table1.Active := True;
Table1.Open;
Table1.Insert;
Table1.FieldByName('Titulo').AsString := Form2.Edit1.Text;
Table1.FieldByName('Arancelado').AsBoolean := estado;
Table1.Post;
Table1.ApplyUpdates;
Table1.Close;
Table1.Active := False;
DataSource1.Enabled := False;
Database1.Connected := False;
end;

procedure TForm2.Table1AfterInsert(DataSet: TDataSet);
begin
ShowMessage ('Registro agregado');
end;
end.

vtdeleon
06-09-2005, 00:12:26
Saludos

????????


Pd:Usa etiquetas [delphi][/delphi ]

jgmarduel
06-09-2005, 19:54:27
no. No me resultó. Gracias igual. Estoy viendo algunas cuestiones vinculadas con el acceso.

marcoev
08-09-2005, 22:11:38
Intena lo siguiente

procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Database1.Connected := True;
Table1.Open;
Table1.Insert;
Table1.FieldByName('Titulo').AsString := Form2.Edit1.Text;
Table1.FieldByName('Arancelado').AsBoolean := if Form2.CheckBox1.State;
Table1.Post;
end;

nose para que necesitas abrir y cerrar tanto las tablas y conexiones, por cierto para BD de access te recomiendo utilizar componentes de Ado y en lugar de un componente de Database utilizar el componente de conection.

TAdoConnection
TAdoTable

por cierto para editar solo cambia el insert por Table1.Edit, y para borrar solo pon Table1.Delete, espero y te sirva de algo