Visual Basic - Solo para Genios Programadores (Insert Into)

Life is soft - evento anual de software empresarial
   
Vista:

Solo para Genios Programadores (Insert Into)

Publicado por marce (21 intervenciones) el 10/06/2011 16:18:17
Buenas, realmente solo un genio creo que puede ayudarme a resolver esto...

Tengo una Formulario de Factura con varios TextBox Ej:


Codigo1 Descrip1 Costo1 Vendido 1 (estos son los textbox del primer renglon)

Codigo2 Descrip2 Costo2 Vendido 2 (estos son los textbox del 2do renglon)

Codigo3 Descrip3 Costo3 Vendido 3 (estos son los textbox del tercer renglon)

Cuando el usuario presiona grabar en un boton, tengo el siguiente codigo:


Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Factura\Articulos.mdb;Persist Security Info=False"
Set rs = New ADODB.Recordset
strsql3 = "Insert Into CONSUMOS (cod_art, descrip_art, costo_art, cantidad)"
strsql3 = strsql3 & "Select codigo1, descrip1, costo1, vendido1 from factura IN C:\Factura\consumo.mdb"
rs.Open strsql3, cn
cn.Close
Set cn = Nothing

Esto funciona Perfecto....! pero solo me graba los datos del Renglón 1 (codigo1, descrip1 etc)
Como puedo hacer para que me registre en la tabla consumos todos los rennglones de la factura?
Con un bucle..? como...? Por favor...podrian ayudarme?
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

Solo para Genios Programadores (Insert Into)

Publicado por apacheco (63 intervenciones) el 14/06/2011 15:46:29
Perdona, se me olvido ponerlo, pero obviamente falta el next como instruccion siguiente al
cn.execute(ssql3)

next ...... para que cierre el loop, porque si no solo grabaria el primerlo
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

Solo para Genios Programadores (Insert Into)

Publicado por apacheco FERPA@ati.es (63 intervenciones) el 13/06/2011 16:20:38
Yo lo que hago en esos casos en utilizar un grid con tantals lineas como campos.

Cuando hago click en una fila, los muevo a unos campos de trabajo y luego modificados los devuelvo a la misma fila.

Si es un alta, habilito los campos de trabajo Y LOS GRABO EN UNA NUEVA FILA.

A la hora de grabar, recorro el gird desde la fila 1 (0 es la de la cabecera) hasta la fila Grid.RowCount -1 para grabarlos

For i=1 to Grid.RowCount - 1
strsql3 = "Insert Into CONSUMOS (cod_art, descrip_art, costo_art, cantidad) " & _
"VALUES (%" & codigo1 & "%, %" & descrip1 & %, " & costo1 & ", " & vendido1 & ") "

cn.execute(ssql3)


Ojo el % debes sustituirlo por la comilla simple en los campos alfanumericos. Si el codigo es numerico quita los dos primeros que encuentres desde la izda
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
Imágen de perfil de RAUL

Solo para Genios Programadores (Insert Into)

Publicado por RAUL (439 intervenciones) el 13/06/2011 18:24:25
Lo basico si mairas tu codigo es que solo insertas una Fila entonces solo tienes una fila,
ahi te dejo la opcion para que insertes tus 3 filas, aun que la opcion de apacheco es mejor opcion
utilizando un for.

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Factura\Articulos.mdb;Persist Security Info=False"
Set rs = New ADODB.Recordset
strsql1 = "Insert Into CONSUMOS (cod_art, descrip_art, costo_art, cantidad)"
strsql1 = strsql3 & "Select codigo1, descrip1, costo1, vendido1 from factura IN C:\Factura\consumo.mdb"
strsql1 = "Insert Into CONSUMOS (cod_art, descrip_art, costo_art, cantidad)"
strsql1 = strsql2 & "Select codigo2, descrip2, costo2, vendido2 from factura IN C:\Factura\consumo.mdb"
strsql1 = "Insert Into CONSUMOS (cod_art, descrip_art, costo_art, cantidad)"
strsql1 = strsql3 & "Select codigo3, descrip3, costo3, vendido3 from factura IN C:\Factura\consumo.mdb"
rs.Open strsql1, cn
rs.Open strsql2, cn
rs.Open strsql3, cn
cn.Close
Set cn = Nothing
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

Solo para Genios Programadores (Insert Into)

Publicado por marce (21 intervenciones) el 14/06/2011 17:17:54
Gracias...!
Funciona perfecto..!!
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

Solo para Genios Programadores (Insert Into)

Publicado por necroair (2 intervenciones) el 06/09/2011 20:39:03
jajaja, buen truco marce. Menuda chorrada de pregunta.
No falla que pongas que la pregunta expertos para que todos aquellos que necesiten reconocimiento salten corriendo a responderla.

Un "MAXIMUM TROLLING" PARA TI
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