Visual Basic - Problema con Rs.addnew

Life is soft - evento anual de software empresarial
   
Vista:

Problema con Rs.addnew

Publicado por Matias (1 intervención) el 09/09/2008 04:49:45
Buenas noches. Tengo un problema con la base de datos. Les paso a contar.
Tengo un archivo de acces con 3 tablas "ingresos", "altas", "estado".
Cuando genero un nuevo registro va para ingresos y se guarda al final de todos los registro que hay en la tabla( HASTA AHI VA PERFECTO)
Despues tomo los datos ingresados y los guardo como un nuevo dato en "altas" y si no existe en "estado" tambien se guarda como un nuevo registro en "estado".
El tema es que cuando se guarda en "altas" o en "estado" se guarda al principio de la tabla y no al final. Nose porque pasa eso, porque eso no pasaba. De la nada espezo a hacer eso.

Lo raro es que en la tabla Ingresos se guarda al final, sin problemas. Pero en las otras dos tablas al principio, como si fuese el primer registo. =/

Espero que me puedas ayudas.

Te paso el codigo fuente:

-------------------PARA PROCESAR EL INGRESO-------------------

Dim cn As ADODB.Connection
Dim cn3 As ADODB.Connection
Private WithEvents rs3 As ADODB.Recordset
Private WithEvents rs2 As ADODB.Recordset


Private Sub A_Click()
Dim l, x As Integer
Dim r1 As Byte
x = -1
l = Len(Obser.Text)
If l = 0 Then
Obser.Text = "Ninguna"
End If
r1 = MsgBox("Está seguro que los datos modificados son correctos?", vbQuestion + vbYesNo, "Verifique los datos")
If r1 = vbYes Then
rs2.AddNew Array("fecha", "legajo", "caja", "bibliorato", "razonsocial", "cuit", "transacciones", "tyc", "baja", "convenio", "poder", "PEalta", "petr", "sinsuscri", "pebaja", "apro", "rech", "Observaciones", "PEesquema"), Array(Label2.Caption, "Asignar número", "Asignar número", "Asignar número", Label3(0).Caption, Label3(1).Caption, trans.Value, TYC.Value, baja.Value, conv.Value, pod.Value, PEalta.Value, PEtr.Value, sinsuscri.Value, PEbaja.Value, Apro.Value, Rech.Value, Obser.Text, peesque.Value)
Else
rs2.Cancel
End If
rs3.MoveFirst
Do Until rs3.EOF
rs3.Find "CUIT= '" & Label3(1).Caption & "'", 1
If rs3.BOF = False And rs3.EOF = False Then
Form6.raso.Caption = rs3.Fields("razonsocial")
Form6.cuit.Caption = rs3.Fields("cuit")
Form6.trans.Value = rs3.Fields("transacciones")
Form6.TYC.Value = rs3.Fields("tyc")
Form6.baja.Value = rs3.Fields("baja")
Form6.conv.Value = rs3.Fields("convenio")
Form6.pod.Value = rs3.Fields("poder")
Form6.Obser.Text = rs3.Fields("observaciones")
End If
x = x + 1
Loop
MsgBox "X es = " & x, vbDefaultButton1
If Apro.Value = True Then
If x = 0 Then
rs3.AddNew Array("fecha", "razonsocial", "cuit", "transacciones", "tyc", "baja", "convenio", "poder", "observaciones"), Array(Label2.Caption, Label3(0).Caption, Label3(1).Caption, trans.Value, TYC.Value, baja.Value, conv.Value, pod.Value, Obser.Text)
Unload Form5
Unload Form2
Load Form2
Form2.Show
Else
Form6.Show
Command1.Enabled = False
A.Enabled = False
End If
Else
Unload Form5
Unload Form2
Load Form2
Form2.Show
End If

End Sub

Private Sub Command1_Click()
Unload Form2
Load Form2
Unload Form5
Form2.Show
End Sub

Private Sub Form_Load()
Label2.Caption = Date
Set rs2 = New ADODB.Recordset
Set cn = New ADODB.Connection
Set rs3 = New ADODB.Recordset
Set cn3 = New ADODB.Connection
cn.Open "Provider=Microsoft.JET.OLEDB.4.0; Data Source=E:PC Banknig EmpresasPCBE.mdb"
cn3.Open "Provider=Microsoft.JET.OLEDB.4.0; Data Source=E:PC Banknig EmpresasPCBE.mdb"
rs2.Source = "altas"
rs2.CursorType = adOpenKeyset
rs2.LockType = adLockOptimistic
rs2.Open "select * from altas", cn
rs2.MoveFirst
rs3.Source = "estado"
rs3.CursorType = adOpenKeyset
rs3.LockType = adLockOptimistic
rs3.Open "select * from estado", cn
rs3.MoveFirst
End Sub

--------------------CREAR EL INGRESO ----------------------------------------
Dim cn As ADODB.Connection
Private WithEvents rs As ADODB.Recordset

Private Sub Command1_Click()
Unload Form4
Form2.Show
End Sub

Private Sub NuevoIngreso()
Dim A, b, c, d, e, p As Byte
Dim t As String
Dim t2 As String
Dim coeficiente(1 To 10) As Integer
Dim i, sumador, veri_nro, resultado, x As Integer
Dim cuit_rearmado As String
Dim cuit As String
x = -1
cuit = Text2.Text
coeficiente(1) = 5
coeficiente(2) = 4
coeficiente(3) = 3
coeficiente(4) = 2
coeficiente(5) = 7
coeficiente(6) = 6
coeficiente(7) = 5
coeficiente(8) = 4
coeficiente(9) = 3
coeficiente(10) = 2
cuit = Trim(cuit)
cuit_rearmado = ""
For i = 1 To Len(cuit) 'separo cualquier caracter que no tenga que ver con numeros
If Asc(Mid(cuit, i, 1)) >= 48 And Asc(Mid(cuit, i, 1)) <= 57 Then
cuit_rearmado = cuit_rearmado & Mid(cuit, i, 1)
End If
Next
cuit_rearmado = Trim(cuit_rearmado)
If Len(cuit_rearmado) <> 11 Then ' si to estan todos los digitos
MsgBox "No están todos los dígitos." & vbCrLf & "Verifique que el CUIT este bien ingresado.", vbCritical, "Error en el C.U.I.T."
Else
sumador = 0
verificador = Val(Mid(cuit_rearmado, 11, 1)) 'tomo el digito verificador
For i = 1 To 10
sumador = sumador + Val(Mid(cuit_rearmado, i, 1)) * coeficiente(i)
'separo cada digito y lo multiplico por el coeficiente
Next
resultado = sumador Mod 11
resultado = 11 - resultado 'saco el digito verificador
If (resultado = 11) Then resultado = 0
veri_nro = Val(verificador)
If veri_nro <> resultado Then
MsgBox "No coincide el dígito verificador." & vbCrLf & "Verifique que el CUIT este bien ingresado.", vbCritical, "Error en el C.U.I.T."
Else
cuit_rearmado = Mid(cuit_rearmado, 1, 2) & "-" & Mid(cuit_rearmado, 3, 8) & "-" & Mid(cuit_rearmado, 11, 1)
x = x + 1
End If
End If
Text2.Text = cuit_rearmado
t = Text1.Text
t2 = Text2.Text
A = Check1(9).Value
b = Check1(8).Value
c = Check1(7).Value
d = Check1(6).Value
e = Check1(5).Value
If x = 0 Then
p = MsgBox("¿Está seguro que estos son los datos correctos del nuevo ingreso?" & vbCrLf & "---------------------------" & vbCrLf & "Razon social = " & t & vbCrLf & "Cuit = " & t2 & vbCrLf & "Transacciones = " & A & vbCrLf & " Terminos Y Condiciones = " & b & vbCrLf & "Baja = " & c & vbCrLf & "Convenio = " & d & vbCrLf & "Poder = " & e, vbExclamation + vbYesNo, "Corroboración")
If p = vbYes Then
rs.AddNew Array("fecha", "razonsocial", "cuit", "transacciones", "tyc", "baja", "convenio", "poder", "observaciones"), Array(Label2.Caption, Text1.Text, Text2.Text, Check1(9).Value, Check1(8).Value, Check1(7).Value, Check1(6).Value, Check1(5).Value, "Ninguna")
If rs.State = 1 Or rs.State = 0 Then
MsgBox "Los datos se han guardado con exito", vbInformation, "Pc Banking Empresas"
Unload Form2
Load Form2
Unload Form4
Form2.Show
Else
MsgBox "Ha ocurrido un error carga de los datos", vbCritical, "Pc Banking Empresas"
End If
Else
rs.Cancel
End If
End If
End Sub

Private Sub Command2_Click()
Call NuevoIngreso
End Sub

Private Sub Form_Load()
Label2.Caption = Date
Set rs = New ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.JET.OLEDB.4.0; Data Source=E:PC Banknig EmpresasPCBE.mdb"
rs.Source = "ingresos"
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
rs.Open "select * from ingresos", cn
rs.MoveFirst
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
Call NuevoIngreso
End Select
End Sub
Private Sub text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
Call NuevoIngreso
End Select
End Sub
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

RE:Problema con Rs.addnew

Publicado por MARIA EDELINA GARCES (1 intervención) el 07/11/2008 22:42:32
ejhnhjdf nkdjfye jhfuyopgnv nsg
fdjf kjoooj jnow
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