Autor Tema: en que momento escribe en el archivo este codigo  (Leído 8919 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
en que momento escribe en el archivo este codigo
« : octubre 13, 2008, 03:23:37 am »

esto es usando el microsoft dao 3.51 para abrir la base de datos

Código: [Seleccionar]

Public ruta As String
Public db1  As DAO.Recordset
ruta = App.Path & "\Mi empresa\registros.mdb "
Set base = OpenDatabase(ruta, False, False, ";PWD=clave")

Set db1 = base.OpenRecordset _
("Select*from compra", dbOpenDynaset, dbOptimistic)
db1.AddNew
db1!Fecha = Calendar1.Value
db1!Concepto = Text7.text
db1!Debe = Val(Text2.text)
db1.Update
db1.close

no estoy seguro si es en el db1.update o db.close



« Última Modificación: octubre 13, 2008, 02:26:11 pm por ernestoelunico »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #1 : octubre 13, 2008, 06:28:18 am »
3 cosas:

1. Adivinando me imagino que te estas refiriendo con db1 a un adodc. Lo siento ernestoelunico, pero el mismo tiempo que usas para redactar y elaborar la pregunta, asi es el tiempo y ganas que se invierte en responderla.

2. Haz realizado varias consultas y no has dado por finalizada la mayoría de ellas. Te recomiendo que vayas consulta por consulta y abras otra nueva hasta que finalices la anterior.

3. Con respecto a tu pregunta, eso se detalla en el MSDN:

ADODC ~ Close
ADODC ~ Update

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #2 : octubre 13, 2008, 02:34:35 pm »


2. Haz realizado varias consultas y no has dado por finalizada la mayoría de ellas. Te recomiendo que vayas consulta por consulta y abras otra nueva hasta que finalices la anterior.


ok vlad lo siento mucho ya cerre los temas resueltos lo q pasa es q se me habia olvidado hacerlo :phew: :phew: :phew: :phew:
cual quier otra observacionn soy todo oidos


por otro lado revisa mi primer mensaje ya agregue mas detalles
saluditos

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #3 : octubre 13, 2008, 02:54:21 pm »
Gracias por coloborar :thumbsup:

Y bueno, la respuesta no varia, como seguramente abras visto en los enlaces, el Update es el que se encarga de vaciar los datos a la base de datos.

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #4 : octubre 13, 2008, 05:02:03 pm »
Citar
d = Val(Text1) + Val(Text2)
h = Val(Text3) + Val(Text4) + Val(Text5) + Val(Text6)
c = 1
b = 0

    If Text7.text = "" Or Text7.text = "Escriba aqui el concepto de la partida" Then
        MsgBox "Error por favor introduzca un concepto para la partida", vbCritical
        c = 0
    Else
        If d = h Then
            If d <> 0 Then
                If f = 1 Then
                Call Form_Load
                End If
               
                If Combo1.text = "Compras" And c = 1 Then
                    If Text1.text <> 0 Then
                        db1.AddNew
                        db1!Fecha = Calendar1.Value
                        db1!Concepto = Text7.text
                        db1!Debe = Val(Text1.text)
                        db1.Update
                    End If
                Else
                    b = 1
                    c = 0
                End If
               
                If Check2.Value = Checked Then
                    If Combo2.text = "IVA Credito Fiscal" And c = 1 Then
                        If Text2 <> 0 Then
                            db6.AddNew
                            db6!Fecha = Calendar1.Value
                            db6!Concepto = Text7.text
                            db6!Debe = Val(Text2.text)
                            db6.Update
                        End If
                    Else
                        b = 1
                        c = 0
                    End If
                End If
                If Check3.Value = Checked Then
                    If Combo3.text = "Caja" And c = 1 Then
                        If Text3 <> 0 Then
                            db2.AddNew
                            db2!Fecha = Calendar1.Value
                            db2!Concepto = Text7.text
                            db2!Haber = Val(Text3.text)
                            db2.Update
                        Else
                            If Combo3.text = "Banco" And c = 1 Then
                                If Text3 <> 0 Then
                                    db3.AddNew
                                    db3!Fecha = Calendar1.Value
                                    db3!Concepto = Text7.text
                                    db3!Haber = Val(Text3.text)
                                    db3.Update
                                End If
                            Else
                                b = 1
                                c = 0
                            End If
                        End If
                    End If
                End If
                If Check4.Value = Checked Then
                    If Combo4.text = "Proveedores" And c = 1 Then
                        If Text4 <> 0 Then
                            db4.AddNew
                            db4!Fecha = Calendar1.Value
                            db4!Concepto = Text7.text
                            db4!Haber = Val(Text4.text)
                            db4.Update
                        End If
                    Else
                        If Combo4.text = "Acreedores" And c = 1 Then
                            If Text4 <> 0 Then
                                db5.AddNew
                                db5!Fecha = Calendar1.Value
                                db5!Concepto = Text7.text
                                db5!Haber = Val(Text4.text)
                                db5.Update
                            End If
                        Else
                            b = 1
                            c = 0
                        End If
                    End If
                End If
                If Check5.Value = Checked Then
                    If Combo5.text = "Documentos por Pagar " And c = 1 Then
                        If Text5 <> 0 Then
                            db8.AddNew
                            db8!Fecha = Calendar1.Value
                            db8!Concepto = Text7.text
                            db8!Haber = Val(Text5.text)
                            db8.Update
                         End If
                    Else
                        b = 1
                        c = 0
                    End If
                End If
               
                If Check1.Value = Checked Then
                    If Combo6.text = "IVA Percibido" And c = 1 Then
                        If Text6 <> 0 Then
                            db7.AddNew
                            db7!Fecha = Calendar1.Value
                            db7!Concepto = Text7.text
                            db7!Haber = Val(Text6.text)
                            db7.Update
                        End If
                     Else
                        c = 0
                        b = 1
                    End If
                End If
            Else
                MsgBox "error todos los campos no pueden tener el mismo valor 0"
                c = 0
            End If
        Else
            MsgBox "Error valores incorrectos en el cargo y el Abono por favor verifique", vbCritical
            c = 0
         End If
    End If
    If b = 1 Then
        MsgBox "Error elija una cuenta", vbCritical
        c = 0
    End If
    If c = 1 Then
        MsgBox "Datos guardados exitosamente", vbInformation
        Text1.text = "0.00"
        Text2.text = "0.00"
        Text3.text = "0.00"
        Text4.text = "0.00"
        Text5.text = "0.00"
        Text6.text = "0.00"
        Text7.text = "Escriba aqui el concepto de la partida"
        Command2.Caption = "Atras"
        db1.Close
        db2.Close
        db3.Close
        db4.Close
        db5.Close
        db6.Close
        db7.Close
        db8.Close
        f = 1
    End If
 
End Sub


yo tengo este codigo entonces para validar la escritura de los datos para obtimizar el codigo deberia entoces pasar los update hasta el finaldonde tengo los db.close
yo siento que me funciona pero no quiero dar lugar a errores en la adicion como duplicidad de informacion


Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #5 : octubre 13, 2008, 06:00:34 pm »
En ese caso no, porque no siempre se van a producir todos los update y podrias ocasionar un error (por ej. hacer update en una tabla que no lo necesita o que no esta en condiciones der ser actualizada)

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #6 : octubre 13, 2008, 06:38:24 pm »
entonces en tu opinio esta bien el codigo... por que me preocupa qu epor ejemplo solo se valide el combo 1 los demas no y me escriba los datos del combo1 y cuando rorija los errores en tiempo de ejecucion como usuario me de problemas duplicando registro so mejor dicho registrandolos innesesariamente... :phew:

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #7 : octubre 15, 2008, 08:28:34 am »
La verdad es que ahi tenes un solo spaggeti de codigo :phew:

Empezando porque en lugar de "c = 0" deberías usar de una vez Exit Sub.

Consejo: Evalua primero todas las condiciones de error posibles y termina con Exit Sub si alguna se cumple, asi vas a poder poner el codigo util depues de esas comprobaciones de error sin necesidad de preocuparte de tantas condiciones mezcladas.

Otra cosa: Siempre usa OPTION EXPLICIT :)

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #8 : octubre 15, 2008, 11:13:05 pm »
si pero para mandar un mensaje de alerta con el exit sub porq me botaria de la funcion y no podria mandar una alerta

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #9 : octubre 16, 2008, 05:41:05 am »
...
Codigo
if Usuario_hizo_algo_malo = True then
  msgbox "Por favor vuelva a leer el manual"
  Exit sub
end if
...

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #10 : octubre 19, 2008, 08:48:38 am »
si funciona la idea pero imaginate q llega a la mitad y se presenta el problema q de ahi para abajo ya nada sirve
siempre guardara los datos de arriba y no me srive asi yo quiero q hasta el fina q ya se haya comprobado todo ver si funciona o q para guardar los datos

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: en que momento escribe en el archivo este codigo
« Respuesta #11 : octubre 19, 2008, 10:24:53 am »
Casualmente estaba leyendo esto y lo que esta al final es practicamente lo que queria explicar: Coding standards ( donde dice: Error handling ).

Hablemos con un ejemplo:

Código: [Seleccionar]
    If Text7.text = "" Or Text7.text = "Escriba aqui el concepto de la partida" Then
        MsgBox "Error por favor introduzca un concepto para la partida", vbCritical
        c = 0
    Else
...

Que pasa despues de eso?, nada, por que lo que esta en el "else" no se ejecuta, y despues esta la comprobación de "if c = 1 then..." que tampoco se cumple y luego termina el proceso.

Por casos asi te digo lo de "exit sub", que lo anterior quedaría asi:
Código: [Seleccionar]
    If Text7.text = vbNullString Or Text7.text = "Escriba aqui el concepto de la partida" Then
        MsgBox "Error por favor introduzca un concepto para la partida", vbCritical
        Exit Sub
    End If

Empezando por ahi ya te evitas el primer "else". Y luego en otras partes como: "If Combo1.text = "Compras" And c = 1 Then" te podes evitar el "And c = 1" puesto que sabes que si paso el exit sub anterior, entonces "c" por fuerza tiene que ser "1".

En fin, te lo digo porque si no cada vez se te va a complicar mas y mas el codigo innecesariamente y luego es que surgen las confusiones y los problemas.

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #12 : octubre 19, 2008, 10:46:34 am »
excelende tu idea pero quizas fue mio el error al no saberme explicar y tenes razon me ahorro mas codigo


el punto es que debe de cumplirse que debe de aver un cargo y un abono por lo menos y que la suma de los cargo debe de ser igual a la suma de los abonos de lo contrario no se puede escribir el archivo espero averme explicado
gracias  :yahoo:
saludos
« Última Modificación: octubre 20, 2008, 04:17:27 pm por ernestoelunico »

Desconectado pop486

  • Sv Jr.
  • **
  • Mensajes: 51
Re: en que momento escribe en el archivo este codigo
« Respuesta #13 : octubre 22, 2008, 08:50:00 am »
no pude evitar el notar que estas haciendo un sistema contable y que ese formalario es para generar partidas de compra y venta...por que no en lugar de los textbox ocupas un grid o un listview...si el problema es que vos queres validar primero....solo ingresas los datos al listview o al flexgrid si afectar nada en la base...luego haces un barrido por todo el listado actualizando cada vez....lo que haces es un while que termine cuando se llega al final de los registros en el ....pero vos queres que la partida cuadre....cada vez que agregas registros al grid  lo que tenes que hacer es sumar las 2 columnas en donde estan los cargos y los abonos...yo los pondria en unos textbox para que puedan ver el descuadre...podes ocupar 3 textbox...unos con la suma de los debe y otro con la suma de los haberes....el tercero para que al cambiar los otros 2 te compare ambos textbox y te muestre el resultado si esta cuadrada la partida y si no cuanto es tu descuadre...creo que nada mas....lo que estas haciendo es solo un sistema contable..??

Desconectado ernestoelunico

  • The Communiter-
  • *
  • Mensajes: 3088
  • Laa shay'a waqi'un Mutlaq bala kul'un mumkin
    • Cositas E-shop
Re: en que momento escribe en el archivo este codigo
« Respuesta #14 : octubre 22, 2008, 03:18:40 pm »
excelente obsevacion mi querido amigo pop486 asi es pero quize salir de lo comun utilizando algo mas grafico y la aplicacion de este sistema es para estudiantes no es tan completo sino lo elemental todas las ventanas se parecen a esa el catalogo de cuentas por asi desirlo esta incluido en el sistema en los combobox y hay tablas en una base de datos que contienen los nombres de las cuentas.

si te vijas en el codigo este solo es para crear los libros mayores aun no tengo el libro diario porq tengo problemas al hacer las partidas ya que no deja sangria para las cuentas abonadas y no se como ir cambiando el numero de la partida

para lo ultimo tenia pensado usar contadores que lo fuera guardando en un .dat y que al hacer la partida tomar el valor lo uniera a la cadena de caracteres "Partida" y luego guardara ese contador pero sumado 1

no se cualquier sugerencia es bien benida date una vuelta por este lado

Ayuda programa de contabilidad sugerencias