por javiandres » 2013-08-28 12:06 @546
Tengo el siguiente código. A la derecha se encuentra un formulario para la adición y en el lado izquierdo está el listado de respectivo formulario. Cuando lleno los campos en el formulario y doy clic en el botón de adicionar, me adiciona en la base de datos, pero no me actualiza el listado y tampoco queda el formulario en blanco para hacer otra adición. ¿Me podrían ayudar?
#!/usr/bin/perl
use warnings;
use strict;
use DBI;
use Wx;
package MyFrame;
use base 'Wx::Frame';
use Wx::Event qw(EVT_BUTTON);
use Switch;
my $dbh = DBI->connect("DBI:Pg:dbname=pruebaperl;host=localhost", "javiandres","251093", {PrintError => 0, RaiseError => 1}) or die "ERROR al conectar con la base datos: $DBI::errstr\n";
my $sth = $dbh->prepare("SELECT id, nombres, apellidos FROM personas");
$sth->execute();
sub new {
my $ref = shift;
my $self = $ref->SUPER::new( undef,-1,'ADICIONAR',[-1, -1],[500, 200],);
my $panel = Wx::Panel->new( $self,-1,);
my $etiqueta1 = Wx::StaticText->new( $panel,-1,'Id',[200, 20],[-1, -1],);
$self->{txtNumero1} = Wx::TextCtrl->new( $panel,0,'',[280, 20],[-1, -1],);
my $etiqueta2 = Wx::StaticText->new( $panel,1,'Nombres',[200, 40],[-1, -1],);
$self->{txtNumero2} = Wx::TextCtrl->new( $panel,2,'',[280, 40],[-1, -1],);
my $etiqueta3 = Wx::StaticText->new( $panel,1,'Apellidos',[200, 60],[-1, -1],);
$self->{txtNumero3} = Wx::TextCtrl->new( $panel,2,'',[280, 60],[-1, -1],);
my $BtnAdicionar = Wx::Button->new( $panel,1,'Adicionar',[200, 100],[-1, -1],);
EVT_BUTTON($self, $BtnAdicionar, \&OnClick );
my $etiqueta_txt = "Id |Nombres | Apellidos|\n";
while(my $ref = $sth->fetchrow_hashref()) {
$etiqueta_txt .= "$ref->{'id'} $ref->{'nombres'} $ref->{'apellidos'}\n";
}
my $etiqueta = Wx::StaticText->new( $panel, -1, $etiqueta_txt, [10, 20], [-1, -1],);
return $self;
}
sub OnClick {
my( $self, $event ) = @_;
my $id=$self->{txtNumero1}->GetValue();
my $nombres=$self->{txtNumero2}->GetValue();
my $apellidos=$self->{txtNumero3}->GetValue();
my $rows = $dbh->do("INSERT INTO personas (id, nombres, apellidos) VALUES ($id,'$nombres', '$apellidos')");
$dbh->disconnect();
}
package MyApp;
use base 'Wx::App';
sub OnInit {
my $frame = MyFrame->new;
$frame->Show( 1 );
}
package main;
my $app = MyApp->new;
$app->MainLoop;