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
 
Editar Base De Datos Gambas 2.19 [Solucionado]
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Editar Base De Datos Gambas 2.19 [Solucionado] 
 
Hola que tal de nuevo, he estado desarrollando en vacaciones un proyecto que me encargaron, antes que nada muchas gracias a este foro he podido solucionar muchas dudas y ya casi termino mi trabajo. Pero antes otra duda jejeje, bueno este proyecto es para registrar ventas. Lo unico que me hace falta es poder modificar la base de datos para que en cada venta se reste el numero de productos vendidos en el inventario. He podido solamente ingresar nuevos datos al final de la base de datos y mas o menos tengo una idea de como modificar la base, pero solo modificando todos los campos a la vez y no solo 1, lo que me lo complica es lo siguiente:
1.- En una ventana tengo la tabla principal donde se carga la base de datos completa, pero las ventas se registran en una tabla en otra ventana
2.- Cuando se da click en aceptar quiero que tome los datos de la segunda tabla y se le resten a la base de datos en la seccion de existencia, si los productos vendidos son 20 tiene que hacer 20 modifiaciones, si es 1 pues solo una modificacion.
3.- Como dije solo quiero modificar 1 campo, pero cada registro en la base de datos tengo 13, pienso que puedo simular una modificacion de los 13 campos pero al final solo cambair 1, el problema es que cree 2 sesiones, en la sesion de venta solo se muestran 5 de los 13 campos, y en sesion de administrador se muestran los 13.
4.- Estoy bloqueado jejejeje

Creo que son todos los problemas, la parte del codigo que me da problema es esta, tengo algunas partes en comentario porque he estado haciendo pruebas

PUBLIC SUB Venta_Click()
    DIM aux AS String
    DIM n, actualiza AS Integer
    DIM auxres AS Result
    
    FOR n = 0 TO Principal.articulos  'Principal.articulos es un contador que registra el numero de articulos preparados para vender
        ConectarBase()
        'auxres = conect.Create("ArticulosDatos")  'aqui intente con create y edit para ver que me permitia hacer  
        aux = Tabla2[n, 1].Text   'aqui me da un error curioso, si lo pongo antes de Conectar Base() me dice "bad row", no entiendo porque si los datos los lee de la ventana no de la base
        Res = conect.EXEC("select * from ArticulosDatos where NumeroSerie='" & aux & "'") 'obtengo la fila a editar de la base de datos, donde coincide con el material a vender
                                                                    
        actualiza = CInt(Res["Existencia"]) - CInt(Tabla2[n, 0].Text) 'guardo el valor del material en inventario menos lo que voy a vender, pero estoy en modo lectura
        auxres["NumeroDato"] = 23      'En teoria auxres sirve para editar, pero no se como seleccionar el valor que quiero editar
        auxres["Existencia"] = "23"
        'conect.Exec("insert into ArticulosDatos values (&6)", actualiza) 'intente editar tambien asi, pero el valor esta en el dato 6, no se si por ejemplo con &6 selecciono ese valor
        CerrarConexion()
    NEXT
END

Sigo leyendo a ver si encuentro mi error, como les decia, espero me ayuden a poder seleccionar el dato a ediar y claro editarlo sin tener que modificar toda la tabla, aaa es sqlite3 en bamgas 2.19 con fedora 11, gracias
 



 
última edición por Erik el Viernes, 07 Enero 2011, 20:03; editado 1 vez 
Erik - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
Tal como lo pones es imposible contestarte. Tienes que ser mas concreto, los demás no conocemos tu aplicación.

Por ejemplo dices que esto a veces te da "bad row"
aux = Tabla2[n, 1].Text

Pues para empezar no se si tabla2 es un gridview, un tableview, un string[] o que ni donde está declarado ni como ¿Como quieres que nadie te responda en esas condiciones?

En ese caso concreto veo que sea lo que sea tu varías las filas (n). Bad row ocurre cuando intentas ir a una fila 3 cuando solo tienes dos filas por ejemplo. Vete tu a saber que estas haciendo con esa n.

create es para crear un registro nuevo (como el addnew de vb) y edit es para modificarlo.
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
soplo escribió: [Ver mensaje]
Tal como lo pones es imposible contestarte. Tienes que ser mas concreto, los demás no conocemos tu aplicación.

Por ejemplo dices que esto a veces te da "bad row"
aux = Tabla2[n, 1].Text

Pues para empezar no se si tabla2 es un gridview, un tableview, un string[] o que ni donde está declarado ni como ¿Como quieres que nadie te responda en esas condiciones?

En ese caso concreto veo que sea lo que sea tu varías las filas (n). Bad row ocurre cuando intentas ir a una fila 3 cuando solo tienes dos filas por ejemplo. Vete tu a saber que estas haciendo con esa n.

create es para crear un registro nuevo (como el addnew de vb) y edit es para modificarlo.


tabla2 es un tableview que se encuentra dentro del mismo formulario que el boton aceptar el cual es el segundo, esa n como lo puse empieza en 0 y se incrementa hasta modificar los datos de los n objetos vendidos, los cuales son principal.articulos, donde principal es el primer formulario, como comente no entiendo porque me da "bad row" ya que empieza de 0 y cada vez que abro el segundo formulario ingresa un dato en tabla2 e incrementa principal.articulos por lo que no puede valer menos de 1 antes de poder dar click en aceptar. Y lo mas curioso es que solo da el error si lo pongo antes de conectarbase() pero no esta leyendo nada de ahi, me parece un error de compilador, ya que la misma expresion la tengo en otra funcion para llenar la tabla y no me da error.
Create lo ocupe para agregar datos al final de la tabla y probar si me estoy conectando a la base de datos y si los pone, pero edit no lo se ocupar muy bien, es lo que estoy investigando ahorita :P. Gracias por responder y vere como puedo hacer mas concreta mi pregunta
 



 
Erik - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
bueno despues de varios intentos no puedo    pero si me explican como funciona solo, creo poder acoplarlo a mi proyecto, la idea central seria la siguiente

Tengo un tableview con una base de datos sqlite3 de 3 campos cada registro, un campo es numerico y lo quiero modificar sin alterar los demas, suponiendo que el campo numerico es el segundo como lo haria?

gracias por su tiempo
 



 
Erik - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
http://gambaslinux.eg2.fr/img/bureautique/CARNET-1.0.1.tar.gz
Mira este codigo, creo que te pueda ayudar
 



 
ivanovichenco - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
Tienes dos caminos, o utilizas un result de modificación:

Dim rs as result
rs=miconexon.edit("mitabla","campoID=&1",valor)
rs!camponumerico=123
rs.update


o utilizas una sentencia SQL

miconexion.exec("Update mitabla set camponumerico=" & 123 & " where campoID=" & valor")


Donde miconexion es la conexion a la base de datos, camponumerico es el nombre del campo que quieres modificar, 123 es el valor que quieres grabar, valor es el identificador del registro y campoID el nombre del campo identificador.

Con eso tienes los datos modificados. Después refrescas los formularios y todo arreglado.

Suerte
 




===================
No podemos regresar
 
última edición por shordi el Viernes, 07 Enero 2011, 10:09; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
Para los tableview tienes los siguientes métodos:
tb.row --> devuelve la fila actual
tb.column --> devuelve la columna actual
tb.rows.count --> devuelve la cantidad de filas que tienes
tb.columns.count --> devuelve la cantidad de columnas que quieres.

Ahora pongamos que yo quiero modificar la celta 0,0
tb[0,0].text="bla bla bla"
la primera celda de la fila actual
tb[tb.row,0].text="bla bla bla"
modificar la celda que hayan pinchado sea cual sea
tb[tb.row,tb.column].text="bla bla bla"
modificar la primera celda de la ultima fila
tb[tb.rows.count,0].text="bla bla bla"
modificar la última celda de la última fila
tb[tb.rows.count,tb.columns.count]="bla bla bla"
un bucle que recorra la segunda columna de principio a fin y ponga un número en cada celda
dim contador as integer
for contador=0 to tb.rows.count
tb[contador,1].text=contador
next
un bucle que recorra todas las celdas de la fila actual y les ponga un numero
for contador00 to tb.columns.count
tb[tb.row,contador].text="bla bla bla"
next

Creo que no me he dejado ninguna posibilidad. Si tu quieres que al hacer click pase algo en la celda elegida pues usas el evento click. La fila elegida será tb.row y la columna elegida será tb.column
private sub tb_click()
tb[tb.row,tb.column].text="bla bla bla"
end
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
Yo eso del stock lo controlo así:



función al añadir articulo:

IF Datastock2.value < 1 THEN         'datastock2 es un datacontrol con el valor del stock de la base.  Si es menos de uno da el mensaje.
   Message.Info("Sin existencias!!")  
   RETURN
  END IF
  
   'Si hay stock....    creo albarán cogiendo el id que esta en la siguiente columna y fila
   fila = gridarticulos2.gridview.row
   codigo = gridarticulos2.gridview[fila, 0].text
   tabla = combotabla2.text


  
   V = iniciar1.conexion.Edit(tabla, "id=" & V["id"]) ' me situó en el registro seleccionado.
   V["Stock"] = Datastock2.value - datacantidad.value       'Actualizo el stock del articulo para que quede mas claro. guardo en el campo Stock de mi base    la cantidad vigente menos la cantidad de articulos vendida al consumidor. osea   Datastock2.value - datacantidad.value

V.Update


  V = iniciar1.conexion.Create("Albaran") ' creo el registro
  
  V["Numero"] = textnumeroalbaran.text    ' y aquí creo la entrada del articulo en el albarán
  V["Articulo"] = dataarticulo2.value
  V["Cliente"] = comboclientes.text
  V["Fecha"] = inicio.fecha  'inicio es un modulo que contiene la variable de la fecha
  V["Precio"] = dataprecio2.value
  V["Cantidad"] = datacantidad.value
  importe = (dataprecio2.value) * (datacantidad.value) ' Calculo el precio de la entrada. (cantidad de artículos por precio unidad)
  V["Importe"] = importe ' y lo guardo en su correspondiente campo
  V.Update 'grabo los datos.


esto es la función de añadir el articulo al albarán o factura cuando se crea.
Me funciona muy bien, de echo utilizo el programa en mi pequeña empresa.

notas::mricy:

datacantidad.value = almacena cantidad de artículos seleccionados para vender en el albarán
iniciar1 = es el modulo que esta el código para conectar con la base de datos
V = variable tipo result (almacena los resultados de la consultas a la base de datos)
Datastock2 = datacontrol que contiene el stock actual del articulo seleccionado.
conexion = variable tipo connection que contiene la conexión a la base de datos.
fila = variable que almacena el numero de fila seleccionada del grid.
codigo = almacena el dato que contiene el campo de la fila seleccionada en la columna en este caso 0.(es el id)
tabla = contiene el nombre de la tabla. (yo divido los artículos de mi tienda en varias tablas por tipos de artículos. por ejemplo(tabla perfumes, tabla cosmética, tabla lencería)

lo de mas esta bastante claro.(Eso creo yo)

No quiero subir el programa completo por que no tiene comentarios y no me gusta infringir las normas del foro.
Pero algún día cuando tenga tiempo de hacerle comentarios lo subiré.

Es un programa de facturación completo y esta echo de este foro. De echo utiliza algún formulario y modulo integro del foro.


facturación
pedidos
abonos
control de stock
control de gastos
correo integrado (para enviar facturas, pedidos y lo que sea)
creación de varias empresas
copias de seguridad (mysql, sqlite3 y postgres)
control de personal
versión servidor, y versión terminal puestos en tienda.

Y por si fuera poco: (GRAFICAS DE FACTURACION) con colorines y todo. gastos y ventas por mes. y mas.

Ya se que a mas de uno no le quedara claro lo que digo pero intento ayudar lo que puedo, puesto que vosotros sois lo que me habéis enseñado a mi.

Lo mas increíble es que copiando y pegando del foro se puede hacer esto.

espero haber ayudado en algo.
Vuestro amigo Pittusa.
 



 
última edición por pittusa el Viernes, 07 Enero 2011, 18:33; editado 4 veces 
pittusa - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
He mirado el código así por encima y si dices que está bien, pues está bien, pero tiene algunos fallos de concepto que te cuento. Date cuenta que es posible que un día quieras mejorar ese programa. Tal como lo has hecho te va a costar porque no estas siguiendo los estándares de programación orientada a objetos.

Para empezar metes el código en el formulario. Eso es un error. En el formulario solo debes tener el código estrictamente necesario para que los controles a disposición del usuario actuen como tengan que actuar y muestren lo que tienen que mostrar.

El resto del código debe ir en otra clase encargada de procesar albaranes. Allí se debe comprobar si se puede o no hacer albarán, lo que debe contener, etc. Devolverá bien o mal si se hizo o no el albarán y punto.

Pongamos el formulario donde tienes el grida ese. Pongamos que además de mostrarse esa información hay un botón para hacer pedido. Pongamos que en la columna uno de tu grida está el código del articulo que piden
Pues allí haces

private sub boton_click()
dim valido as boolean
valido=cc.CrearAlbaran(grida[ clong(grid.row,0].text) )
if not valido then
   message.info("No se hizo albaran")
endif
 

Y eso es todo lo que haces en el formulario para crear albaranes. cc es una clase que me he inventado que sirve para crear, modificar, borrar o facturar albaranes. En esa clase habría una función pública como esta
public function CrearAlbaranes(CodigoArticulo as long) as boolean
dim valido as boolean
 ...
return valido
end
 
Ahora supongamos que en vez de un articulo tu quieres que el usuario pueda elegir muchos articulos que quedan metidos en la grida (una carrito de la compra).
Pues si hay muchos lo que haces no es enviar un articulo sino la grida entera. Sería así.
private sub boton_click
dim valido as boolean
valido=cc.CrearAlbaran( grida )
if not valido then
   message.info("No se hizo albaran")
endif
 

y en la clase de crear albaranes tendrías algo como esto
public function CrearAlbaranes(GridaCarrito as GridView) as boolean
dim valido as boolean
...
... 'aquí tendrías que recorrer el gridacarrito linea a linea para facturar el pedido
...
return valido
end
 


Una pequeña sugerencia.
Intenta logear tu rutina. Intenta que cuando vas a crear albaran se escriba en algun lado (incluso un debug) "inicio de creacion de albaran". Luego según se va haciendo el albaran que vaya escribiendo la frase apropiada y cuando termine que diga si lo ha hecho bien o no.

Tal como lo has hevho verás que algo tan simple se te complica mucho porque el código no está bien estructurado.

No lo digo para desanimarte, todo lo contrario. Te lo digo para que lo próximo que hagas partas de lo que ya has aprendido y lo hagas aún mejor. Si te acostumbras a usar clases verás que haces lo mismo con mucho menos esfuerzo y todo queda mejor.

Si te interesa lo que te cuento iré un poquito mas allá para que veas la diferencia entre lo que has hecho y lo que podrías haber hecho con menos esfuerzo pero no voy poner una pelmada que no le interesa a nadie je je je

 
 



 
última edición por soplo el Viernes, 07 Enero 2011, 19:47; editado 2 veces 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Editar Base De Datos Gambas 2.19 
 
Muchas gracias a todos, por fin furulo esta cosa, como todo error era una tonteria, les muestro el codigo aplicado a mi proyecto

PUBLIC SUB Venta_Click()
    DIM aux AS String
    DIM n, actualiza AS Integer
    DIM auxres AS Result
    
    FOR n = 0 TO Principal.articulos - 1   'Cambiara tantos articulos como se hayan vendido
        ConectarBase()                               'Funcion que se conceta a la base de datos
        
        aux = Tabla2[n, 1].Text  'Guardo el nombre del articulo que se encuentra en la segunda columna ya que empieza en 0                                                                    
        Res = conect.EXEC("select * from ArticulosDatos where NumeroSerie='" & aux & "'")  'Busco el articulo en mi base de datos
        actualiza = CInt(Res["Existencia"]) - CInt(Tabla2[n, 0].Text) 'Resto el numero de productos en existencia menos los vendidos
        auxres = conect.Edit("ArticulosDatos", "NumeroSerie=&1", aux) 'Abro mi base de datos en modo de edicion y busco el articulo
        auxres["Existencia"] = actualiza                   'Guardo la nueva cantidad de articulos en su correspondiente campo
        auxres.Update              'Guardo los cambios en la base de datos
        
        CerrarConexion()    'Cierro mi base de datos
    NEXT
    Principal.Form_Open()  'Voy a mi foprmulario principal donde se actualiza la tabla de articulos disponibles
    ME.Close           'Cierro mi formulario de ventas
END


Yo creo que la base de datos se puede abrir y cerrar fuera del for pero no creo que implique problemas, ahora solo queda depurar errores como no vender mas articulos de los que tengo jejeje, gracias de nuevo a todos, voy a considerar sus comentarios, tratare de estructurar mejor mi codigo y de cooperar con este foro.
 



 
última edición por Erik el Viernes, 07 Enero 2011, 20:02; editado 2 veces 
Erik - 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 [Solucionado] Mensaje Warning: Circular Re... gara_pm Bases de Datos 4 Lunes, 26 Diciembre 2011, 23:27 Ver último mensaje
gara_pm
No hay nuevos mensajes Editar Un Registro De Una Base De Datos SergioDanyelpy Bases de Datos 2 Domingo, 25 Agosto 2013, 20:38 Ver último mensaje
jousseph
No hay nuevos mensajes Crear Base De Datos SQL Desde Conexiones E... SafeMango Bases de Datos 9 Viernes, 30 Diciembre 2016, 01:57 Ver último mensaje
SafeMango
No hay nuevos mensajes Leer Y Editar Una Base De Dato Sql Desde A... SafeMango Bases de Datos 4 Martes, 10 Enero 2017, 00:04 Ver último mensaje
SafeMango
 

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