Autor Tema: modificar datos de una columna de una tabla base datos mdf Visual Basic  (Leído 11977 veces)

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Buenas. Estoy haciendo la típica base de datos con el botón de insertar, eliminar, buscar y editar. El tema es que en la tabla que he fabricado hay un valor (cantidad) el cual no voy a introducir a mano. Ese valor quiero que se inserte automaticamente. Es decir, imaginemos que la tabla consta de coches de colores. Pues bien, quiero que si introduzco coche rojo y ya tengo un coche rojo en la tabla, en la columna cantidad se me sume y me ponga 2 en vez de 1 que pondría anteriormente. No sé como hacer esto mediante código ya que ni siquiera se como referirme a la columna en sí para supongo, hacer algún "si coche rojo = a alguna fila de la columna coches then coche rojo= n+1. En fin, que no tengo ni idea jejeje.

Gracias de antemano por vuestra atención.
« Última modificación: 25 de Diciembre 2014, 18:55 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #1 en: 19 de Diciembre 2014, 08:18 »
Hola, tú mismo has explicado cómo tiene que ser la solución. Tienes que comprobar si hay en la tabla un coche rojo y si lo hay sumar en la columna cantidad +1.

Sería como esto:

Proceso solicitud insertar (datoAInsertar) {

Buscar el color en la tabla:
resultado = SELECT * FROM nombreTabla WHERE color = datoAInsertar.color

Si resultado está vacío -- > insertar datoAInsertar en la tabla

Si resultado no está vacío -- > UPDATE en la tabla sumando 1 al valor cantidad de la fila correspondiente al coche rojo

}

Bueno, esto no es más que el planteamiento, para hacerlo en un lenguaje de programación concreto tienes que hacerlo con la sintaxis que sea, depende de qué lenguaje de programación vayas a utilizar.

Salu2

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #2 en: 19 de Diciembre 2014, 09:55 »
Lo estoy haciendo en visual basic, y el tema es que no tengo ni idea de como referirme a la tabla. Y mucho menos a una columna o fila en concreto. Si pongo el mismo nombre que una columna por ejemplo, el visual studio no lo reconoce, por tanto reitero que no sé como nombrar a la tabla mediante código.

Ejemplo real:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.TableTableAdapter1.Insert(TextBox1.Text, TextBox2.Text)
     
        Me.TableTableAdapter1.Fill(Me.DatabaseDataSet1.Table)
    End Sub
End Class

Existen 3 columnas en la tabla: Tipo, color y cantidad. Mediante 1 botón "insertar" y 2 textbox (una para coche y otra para el color del coche) se inserta coche rojo. Para la tercera columna no hago otro textbox3.text debido a que quiero que automaticamente si había 0 coches rojos se autorellene poniendo 1 en dicha columna cantidad. Si introduzco otra vez coche rojo, se le sumaría 1 a la cantidad que hubiese, 1+1= 2.
Parece sencillo pero sigo sin tener ni idea.
« Última modificación: 19 de Diciembre 2014, 10:02 por oigres »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #3 en: 19 de Diciembre 2014, 10:09 »
Hola, fíjate en cómo lo hacen en ejemplos para hacerlo tú de la misma manera. Depende un poco de la versión de Visual Basic que estés usando (¿cuál es?) y de la base de datos que estés usando (¿cuál es?)

Ejemplo: https://www.aprenderaprogramar.com/foros/index.php?topic=604

Ejemplo: https://www.aprenderaprogramar.com/foros/index.php?topic=1504

Salu2

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #4 en: 19 de Diciembre 2014, 10:25 »
Uso visual studio 2013 y la base de datos es sql. Database.mdf y databaseDataSet.xsd es lo que tengo respecto a la base de datos.
Muchas gracias por los links, los estoy revisando y probando cosillas a ver que tal, te mantengo informado :D

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #5 en: 19 de Diciembre 2014, 10:51 »
He revisado los mensajes y sigo sin sacar nada en claro de cómo referirme a un elemento de la tabla mediante el código. Además he intentado descargar el código del usuario del primer post para poder estudiarlo un poco y encontrar allí la respuesta y ya está eliminado de dropbox.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #6 en: 19 de Diciembre 2014, 11:26 »
Hola, ¿base de datos sql? sql es el lenguaje para consultas, pero por lo que dices pienso que debes estar usando una base de datos interna de visual studio (mdf)

Aquí tienes la referencia: http://msdn.microsoft.com/es-es/library/ms233763.aspx

http://msdn.microsoft.com/es-es/library/ms171890.aspx

Salu2

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #7 en: 22 de Diciembre 2014, 16:01 »
He introducido las 2 últimas líneas en el código de la tabla:
Código: [Seleccionar]
CREATE TABLE [dbo].[Table] (
    [FARADIOS] INT          NOT NULL,
    [VOLTAJE]  DECIMAL (18) NOT NULL,
    [CANTIDAD] INT          NOT NULL,
    CONSTRAINT [FK_Table_CANTIDAD] FOREIGN KEY ([CANTIDAD]) REFERENCES [Table]([CANTIDAD]),
    CONSTRAINT [PK_CANTIDAD] PRIMARY KEY ([CANTIDAD])

);

pero luego sigo sin saber como referirme a la columna CANTIDAD para por ejemplo asignarle un valor int en una de sus filas. Esto sería el código en un form.

Código: [Seleccionar]
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.TableTableAdapter1.Insert(TextBox1.Text, TextBox2.Text)
        Me.TableTableAdapter1.Fill(Me.DatabaseDataSet1.Table)
    End Sub

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #8 en: 22 de Diciembre 2014, 16:35 »
Tienes varias formas de actuar sobre una tabla para añadir información:

- Con un UPDATE puedes modificar una fila ya existente y modificar el valor que existe en una columna concreta o en varias.

- Con un INSERT puedes añadir una fila completa.

Dependiendo de lo que quieras hacer, debes usar un tipo de instrucción u otra.

Salu2

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #9 en: 22 de Diciembre 2014, 16:46 »
Lo que deseo hacer me estoy dando cuenta que quizás esa demasiado complicado para mi.

Introducir los datos de un condensador (los faradios irían en la columna FARADIOS y el voltaje en la columna VOLTAJE). Esto se introduciría mediante los textbox.
El tema viene que quiero que la columna CANTIDAD se actualice automaticamente. Es decir, si introduzco el condensador 220 faradios y 13voltios, se me ponga en CANTIDAD = 1.
Si lo introduzco de nuevo, porque tengo otro condensador igual, se me sume y por tanto tendría 2 en CANTIDAD.

Sigo sin saber que código poner en esta parte, estoy super perdido:
Código: [Seleccionar]
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.TableTableAdapter1.Insert(TextBox1.Text, TextBox2.Text)
        Me.TableTableAdapter1.Fill(Me.DatabaseDataSet1.Table)
    End Sub

En la parte de  Me.TableTableAdapter1.Insert(TextBox1.Text, TextBox2.Text) me dice como advertencia que debería introducir un tercer textbox para la columna CANTIDAD, pero precisamente esa es la que no quiero introducir a mano.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #10 en: 22 de Diciembre 2014, 18:13 »
Para ir sumando lo primero que tienes que hacer es una consulta para determinar cuál es el valor actual:

SELECT cantidad FROM nombreTabla WHERE id = idDeseado

Una vez tienes la cantidad tienes que hacer un update

nuevaCantidad = cantidadObtenida + 1

UPDATE cantidad FROM nombreTabla SET cantidad = nuevaCantidad

También podrías hacerlo directamente sin necesidad del select pero así queda más claro lo que se hace.

Alternativamente sería algo así:

UPDATE cantidad FROM nombreTabla SET cantidad = (SELECT cantidad FROM nombreTabla WHERE id = idDeseado)+1

Si no sabes cómo hacer las operaciones básicas con bases de datos primero tendrías que aprender estas operaciones básicas y luego ya ver las aplicaciones más concretas que quieras realizar...

Salu2

oigres

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #11 en: 22 de Diciembre 2014, 18:40 »
A ver, si mi problema es que sigo sin saber como referirme a la columna!

por ejemplo, en lo que has escrito:

SELECT cantidad FROM nombreTabla WHERE id = idDeseado

nombreTabla, ahí no hay manera de referirme a ella, ni (CANTIDAD) O [CANTIDAD] que así es como se llama la columna de mi tabla a la cual quiero referirme, o mil formas más que he probado y nada...

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2659
    • Ver Perfil
Re:modificar mediante código los datos de una columna de una tabla
« Respuesta #12 en: 23 de Diciembre 2014, 10:28 »
Si no me equivoco tienes que establecer la conexión a la base de datos indicando la ruta del fichero mdf, ese vendría siendo el equivalente al nombre de base de datos.

Dentro del fichero mdf tendrás tablas, columnas, etc. creo que aquí lo explica: http://msdn.microsoft.com/es-es/library/ms233763.aspx en el apartado "Crear tablas, columnas, claves principales y claves externas"

Cuando indica CREATE TABLE [dbo].[Customers] indica que está creando la tabla Customers.

Este es un ejemplo de código que he encontrado donde se muestra cómo acceder a un mdf:

Código: [Seleccionar]
Public Class Form1

Private MyDatAdp As New SqlDataAdapter
Private MyCmdBld As New SqlCommandBuilder
Private MyDataTbl As New DataTable
Private MyCn As New SqlConnection
Private MyRowPosition As Integer = 0

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

MyCn.ConnectionString = “Data Source=TOSHIBA-PC\SQL2012; AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test.mdf; ” & _
“User Instance=True;Integrated Security=SSPI”
MyCn.Open()

MyDatAdp = New SqlDataAdapter(“Select* from Contacts”, MyCn)
MyCmdBld = New SqlCommandBuilder(MyDatAdp)
MyDatAdp.Fill(MyDataTbl)

Dim MyDataRow As DataRow = MyDataTbl.Rows(0)
Dim strName As String
Dim strState As String
strName = MyDataRow(“ContactName”)
strState = MyDataRow(“State”)
TxtName.Text = strName.ToString
TxtState.Text = strState.ToString
Me.showRecords()

End Sub

Private Sub showRecords()

If MyDataTbl.Rows.Count = 0 Then
txtName.Text = “”
txtState.Text = “”
Exit Sub
End If

txtName.Text = MyDataTbl.Rows(MyRowPosition)(“ContactName”).ToString
TxtState.Text = MyDataTbl.Rows(MyRowPosition)(“State”).ToString

End Sub

End Class

Y este código que te permite moverte por el contenido de una base de datos:

Código: [Seleccionar]
Public Class Form1
Private MyDatAdp As New SqlDataAdapter
Private MyCmdBld As New SqlCommandBuilder
Private MyDataTbl As New DataTable
Private MyCn As New SqlConnection
Private MyRowPosition As Integer = 0

Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed

MyCn.Close()
MyCn.Dispose()
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyCn.ConnectionString = “Data Source=TOSHIBA-PC\SQL2012; AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test.mdf; ” & _
“User Instance=True;Integrated Security=SSPI”
MyCn.Open()

MyDatAdp = New SqlDataAdapter(“Select* from Contacts”, MyCn)
MyCmdBld = New SqlCommandBuilder(MyDatAdp)
MyDatAdp.Fill(MyDataTbl)

Dim MyDataRow As DataRow = MyDataTbl.Rows(0)
Dim strName As String
Dim strState As String
strName = MyDataRow(“ContactName”)
strState = MyDataRow(“State”)
TxtName.Text = strName.ToString
TxtState.Text = strState.ToString
Me.showRecords()

End Sub
Private Sub showRecords()

If MyDataTbl.Rows.Count = 0 Then
txtName.Text = “”
txtState.Text = “”
Exit Sub
End If

txtName.Text = MyDataTbl.Rows(MyRowPosition)(“ContactName”).ToString
TxtState.Text = MyDataTbl.Rows(MyRowPosition)(“State”).ToString
End Sub

Private Sub BtnMoveFirst_Click(sender As Object, e As EventArgs) Handles BtnMoveFirst.Click
MyRowPosition = 0
Me.showRecords()
End Sub

Private Sub BtnMovePrev_Click(sender As Object, e As EventArgs) Handles BtnMovePrev.Click
If MyRowPosition > 0 Then
MyRowPosition = MyRowPosition – 1
Me.showRecords()
End If
End Sub

Private Sub BtnMoveNext_Click(sender As Object, e As EventArgs) Handles BtnMoveNext.Click
If MyRowPosition < (MyDataTbl.Rows.Count – 1) Then
MyRowPosition = MyRowPosition + 1
Me.showRecords()
End If
End Sub

Private Sub BtnMoveLast_Click(sender As Object, e As EventArgs) Handles BtnMoveLast.Click
If MyDataTbl.Rows.Count > 0 Then
MyRowPosition = MyDataTbl.Rows.Count – 1
Me.showRecords()
End If
End Sub

Private Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click
Dim MyNewRow As DataRow = MyDataTbl.NewRow()
MyDataTbl.Rows.Add(MyNewRow)
MyRowPosition = MyDataTbl.Rows.Count – 1

Me.showRecords()
End Sub

Private Sub BtnDelete_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnDelete.Click
If MyDataTbl.Rows.Count <> 0 Then
MyDataTbl.Rows(MyRowPosition).Delete()
MyRowPosition = 0
MyDatAdp.Update(MyDataTbl)
Me.showRecords()
End If
End Sub

Private Sub BtnSave_Click(ByVal sender As Object, ByVal e As EventArgs) Handles BtnSave.Click

If MyDataTbl.Rows.Count <> 0 Then
MyDataTbl.Rows(MyRowPosition)(“ContactName”) = TxtName.Text
MyDataTbl.Rows(MyRowPosition)(“state”) = TxtState.Text
MyDatAdp.Update(MyDataTbl)
End If

End Sub
End Class

Con los controles para visulaizar y manipular:


 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".