Gambas - Usar Postgresql con Gambas 3.7.1

   
Vista:
Imágen de perfil de Jose

Usar Postgresql con Gambas 3.7.1

Publicado por Jose (2 intervenciones) el 02/05/2015 07:38:45
Un saludo a toda la comunidad. Hace unos dias empecé a trabajar con Gambas yn aunque no es como Visual Basi, me pareción muy similar y muy útil para los entornos con Linux.
Me pidieron en la universidad un programa que inserte valores en una base de datos, la exigencia es que se debe usar PostgreSQL como manejador de esta. Ví varios tutoriales pero no me han sido muy útiles, el porblema está en que no me inserta los valores de las cajas de texto en las tablas, puedo conectarme a la tabla y ver su estuctura desde Gambas pero no puedo hacer ninguna inserción de datos. Aquí les dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Public db As Connection
Public person As Boolean
 
Public Sub Conectar() As Boolean
  db = New Connection
  db.Type = "postgres"
  db.Host = "localhost"
  db.Login = "postgres"
  db.Password = "654321"
  db.Name = "LLA"
  Try db.Open()
If Error Then
   Message.error("Error al intentar conectarse a la base de datos")
   Print Error.Text
   Print Error.Code
   Print Error.Where
Endif
End
 
Public Sub Form_Open()
  Me.Center
End
 
Public Sub reg_emp_Click()
person = False
  fr_reg.Text = "Datos de la empresa"
  ComboBox1.Visible = True
  ComboBox1.Clear
  ComboBox1.Add("J")
  ComboBox1.Add("G")
  ComboBox1.Add("V")
  lb_rif.visible = True
  lb_dir.Visible = True
  lb_nombre.Visible = True
  lb_tlf.Visible = True
  tx_dir.Visible = True
  tx_nombre.Visible = True
  tx_rif.Visible = True
  tx_tlf.Visible = True
  lb_rif.Text = "RIF:"
  lb_nombre.Text = "Razón social:"
  lb_dir.Text = "Dirección:"
  lb_tlf.Text = "Teléfono:"
End
 
Public Sub reg_per_Click()
person = True
  fr_reg.Text = "Datos del usuario"
  ComboBox1.Visible = True
  ComboBox1.Clear
  ComboBox1.Add("V")
  ComboBox1.Add("E")
  ComboBox1.Add("P")
  lb_rif.visible = True
  lb_dir.Visible = True
  lb_nombre.Visible = True
  lb_tlf.Visible = True
  tx_dir.Visible = True
  tx_nombre.Visible = True
  tx_rif.Visible = True
  tx_tlf.Visible = True
  lb_rif.Text = "Cédula:"
  lb_nombre.Text = "Nombre:"
  lb_dir.Text = "Dirección:"
  lb_tlf.Text = "Teléfono:"
End
 
Public Sub bt_acep_Click()
'Dim insertar As Result
If person = True Then
Try db.Exec("INSERT INTO Persona (nac,cedula,nombre,direccion,telefono) VALUES ('ComboBox1.Text'. 'tx_rif'.Text' 'tx_nombre.Text'. 'tx_dir.Text','tx_tlf.Text)")
  'Else
 '   If empre = True Then
  '     db.Exec("INSERT INTO Empresa (nac,cedula,nombre,direccion,telefono) Values ('ComboBox1','tx_rif','tx_nombre','tx_dir','tx_tlf')")
 '   Endif
Endif

End

Para hacer más limpias las pantallas estoy usando una variable que se haga verdadera si voy a registrar personas y se guarden los datos en la tabla PERSONAS en caso contrario se guardarán en la tabla EMPRESAS.
Espero que me puedan ayudar. Saludos y abrazos desde Venezuela.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Miguel Hernandez Liebano

Usar Postgresql con Gambas 3.7.1

Publicado por Miguel Hernandez Liebano mhliebano@gmail.com (59 intervenciones) el 05/05/2015 21:26:27
Saludos, prueba en hacer algo como esto en el evento guardar:

db.Begin
rs = cx.Create("Empresa")
rs!nac = TextBox1.Text
rs!cedula = ValueBox1.Value
......
rs.Update
db.Commit

donde db es tu conexión y rs es un objeto Result con eso debería funcionar. De todos modos revisa el ejemplo de conexión con SQLite que esta en la sección de códigos fuentes para que te orientes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jose

Usar Postgresql con Gambas 3.7.1

Publicado por Jose (2 intervenciones) el 14/05/2015 17:09:29
Gracias por la respuesta, fue bastante útil.
Sin embargo realicé algo diferente:
Creé una conexión en la carpeta CONEXIONES del proyecto, llené los campos requeridos y posteriormente hice el llamado en la clase del formulario. He aquí lo que resolví.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public $db As New Connection
 
Public Function Conectar() As Connection
  $db = Connections["Connection1"]
  $db.Open()
  If $db = Null Then
     Message.error("Error al intentar conectarse a la base de datos")
     Print Error.Text
     Print Error.Code
  Endif
End
 
Public Sub bt_guardar_Click()
  $db.Exec("INSERT INTO people VALUES (&1,&2,&3,&4,&5)", ComboBox1.Text, tx_rif.Text, tx_nombre.Text, tx_dir.Text, tx_tlf.Text)
End

Miguel le reito mi agradecimiento por su respuesta. Abrazos desde Venezuela.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar