Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Resumiendo: Mantener BBDD Con Comandos Gambas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Hola.
Generalmente uso SQL directamente para mantener las bases de datos de mis programas pero me gustaría aprender a usar bien el método Gambas.

Insertar un registro
¿Esto como se hace con comandos gambas?

Borrar un registro
resAdd = Connections["cnx"].Delete("tabla", "campo_id = &1", 3) ' Donde 3 es el valor de la clave
o
resAdd = cnx.Delete("tabla", "campo_id = &1", 3) ' Donde 3 es el valor de la clave

Modificar un registro
resMod=Connections["cnx"].Edit("tabla", "campo_id = &1", 3) ' Donde 3 es el valor de la clave
o
resMod=cnx.Edit("tabla", "campo_id = &1", 3) ' Donde 3 es el valor de la clave

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Citar:
Insertar un registro
¿Esto como se hace con comandos gambas?

Tienes que crear un Result de edición. más o menos así:

dim r as result
dim clave as integer

clave=3

r=miconexion.edit("tabla","clave=&1",clave)

r!nombrecampo="hola"
r!nombrecampo2="mundo"

r.update 'Aquí se produce la grabación


Ventajas
Como ves, a la hora de insertar los valores en los campos tienes libertad absoluta de poner lo que quieras y lo mejor, esta sintaxis es independiente del motor de base de datos, con lo que te vale para mysql, sqlite y postGresql indistintamente.
Desventajas
Es más lenta que utilizar directamente la sentencia sql. Para transacciones grandes en bucles, según circunstancias (bases de datos lejanas, conexiones a internet lentas, etc. etc.) puede llegar a ser infumable.
En esos casos ayuda muyo utilizar transacciones con el formato más o menos así

dim r as result
    r=miconexion.exec("Select * from tabla")
Miconexion.Begin
    while r.available
         'comandos de actualización
         '.....
         '.....
         r.movenext
    wend
Miconexion.Commit
 

Eso acelera mucho las cosas pero nunca llega a ser tan rápido como una sentencia update masiva.
Sin embargo hay muchas veces que no es posible resumir en una sentencia sql todo lo que le quieres hacer a cada registro de un result. Esta técnica es en cuanto a flexibilidad absoluta.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
shordi escribió: [Ver mensaje]

dim r as result
dim clave as integer
clave=3
r=miconexion.edit("tabla","clave=&1",clave)
r!nombrecampo="hola"
r!nombrecampo2="mundo"
r.update 'Aquí se produce la grabación



Shordi: Esto que pones es para modificar un registro, donde existe una clave en la tabla, en este caso "3". Yo pregunto como insertar un registro que no existe todavia en la base, y por lo tanto no existe la clave, en este caso "3".
Recuerda que en SQL cuando insertas en una tabla que tiene autoincremento o serial en la sentencia SQL se pone Null.
¿Como seria con comando gambas?

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Efectivamente, se me ha ido la pinza...  

La creación la haces con
dim r as result
dim clave as integer

clave=3

r=miconexion.create("tabla")
'Si usas una clave autoincremental no tienes que poner ningún valor en ese campo. Si no, será obligatorio que lo pongas, claro.
r!nombrecampo="hola"
r!nombrecampo2="mundo"

r.update 'Aquí se produce la grabación

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
shordi escribió: [Ver mensaje]
Efectivamente, se me ha ido la pinza...  

La creación la haces con
dim r as result
dim clave as integer

clave=3

r=miconexion.create("tabla")
'Si usas una clave autoincremental no tienes que poner ningún valor en ese campo. Si no, será obligatorio que lo pongas, claro.
r!nombrecampo="hola"
r!nombrecampo2="mundo"

r.update 'Aquí se produce la grabación


Ok, gracias, yo este codigo lo habia visto en el wikilibro de nuestor foro pero pensaba (equivocado) que era para crear una tabla  
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Shordi: los comando gambas para hacer la operaciones básicas ya están claros me parece.
El otro tema es: Editar los datos en un formulatio.
Desde el grid (normal o de dbControles) se puede obtener el id del registro con el evento Click o DblClick [1], una ves se sabe la tabla y el id se pueden crear por código los controles en un formulario auxiliar o dentro del mimo en algún rincón. Pero acá viene el "viejo" problema de las claves foráneas.

¿En dbControles se crea una lista de tablas campos claves foráneas y campos de la tabla secundaria?

Si es así ¿Como se llama dicha lista?

[1]
Public Sub grwFile_Click()
  Print grwFile[grwFile.Row, 0].Text
End

Public Sub grwFile_DblClick()
  Print grwFile[grwFile.Row, 0].Text
End
 


Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
¿Intentas, acaso, hacer un phpmyadmin para gambas?¿Algo que te de mantenga las bases de datos y sus relaciones sin que tu escribas ni una linea de código? Eso se podría hacer, claro, pero no creo que valga la pena.

Tal como yo lo hago, para las relaciones tienes los dbcontroles, que se inventaron para eso. Ya te pasé un ejemplo aquí:
https://foro.gambas-es.org/viewtopic.php?f=5&t=5926
Pero no contestaste ni comentaste nada. Si algo no entiendes del mismo, dímelo.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
¿Y como se agrega, por código, una tabla a la base de datos?

Estoy intentando con esto de mas abajo, pero no funciona.

    If mi_conexion.Tables.Exist("tablanueva") = False Then
      mi_conexion.Tables.Add("tablanueva")
      tbl = mi_conexion.Tables["tablanueva"]

      With tbl
        tbl.Fields.Add("id", db.Serial)
        tbl.Fields.Add("nombre", db.String)
      End With

    Endif
 


la conexión esta abierta puedo insertar y editar datos en las tablas existentes pero no puedo agregar tablas nuevas.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Cuando hay un campo db.serial se requiere que sea primary key.

Prueba ésto:


If mi_conexion.Tables.Exist("tablanueva") = False Then
    mi_conexion.Tables.Add("tablanueva")
    tbl = mi_conexion.Tables["tablanueva"]

    With tbl
        tbl.Fields.Add("id", db.Serial)
        tbl.Fields.Add("nombre", db.String)
    End With
    tbl.PrimaryKey = ["id"]
    tbl.Update()
Endif

 

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Resumiendo: Mantener BBDD Con Comandos Gambas 
 
Shordi: Funciono perfecto !!
Gracias.

Ahora voy intentar el paso siguiente, las claves foráneas.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Gambas Y Comandos Via Ssh (SOLUCIONADO) Pablo-GNU General 13 Jueves, 24 Junio 2010, 23:13 Ver último mensaje
abarzuaf
No hay nuevos mensajes Ejecutar Comandos Shell Desde Gambas Como ... Elena General 6 Viernes, 03 Febrero 2012, 03:30 Ver último mensaje
Agamenon
No hay nuevos mensajes Unir Varios Comandos Terminal Desde Gambas... atonidas Aplicaciones/Fragmentos de Código 5 Lunes, 11 Noviembre 2013, 22:12 Ver último mensaje
jguardon
No hay nuevos mensajes Abrir O Ejecutar Un Proyecto Gambas Desde ... Shell General 5 Lunes, 29 Febrero 2016, 19:48 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron