Foros del Web » Programación para mayores de 30 ;) » .NET »

programacion el visual basic

Estas en el tema de programacion el visual basic en el foro de .NET en Foros del Web. Hola , necesito que por favor me expliquen como concatenar en una tabla de subtipos tengo la clave primaria que es codsubt, la otra poimaria ...
  #1 (permalink)  
Antiguo 01/11/2011, 21:51
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
programacion el visual basic

Hola , necesito que por favor me expliquen como concatenar en una tabla de subtipos tengo la clave primaria que es codsubt, la otra poimaria que es codt, y ala vez es foranea y el otro dato es nombre y yo lo tengo asi:

Private Sub cmdguardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdguardar.Click

Dim cs As Integer
Dim ct As Integer
Dim nom As String
Dim sql As String

If txtcsubtipo.Text.Length = 0 Then
MessageBox.Show("codigo no valido", "ERROR")
txtcsubtipo.Focus()
Exit Sub
End If

If xopcion = 1 Then
Dim xcantidad As Long = -1

miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=prueba009")

miconexion.Open()

micomando = New MySqlCommand("select count(*)from subtprod =" & txtcsubtipo.Text & "", miconexion)
xcantidad = micomando.ExecuteScalar
miconexion.Close()
If xcantidad > 0 Then
MessageBox.Show("codigo digitado esta repetido", "ERROR")
txtcsubtipo.Focus()
Exit Sub
End If

End If

If txtctipo.Text.Length = 0 Then
MessageBox.Show("descripcion no valida", "ERROR")
txtctipo.Focus()
Exit Sub
ElseIf txtnombre.Text.Length = 0 Then
MessageBox.Show("nombre no valido", "ERROR")
txtnombre.Focus()
Exit Sub
End If


cs = Integer.Parse(txtcsubtipo.Text)
ct = Integer.Parse(txtctipo.Text)
nom = txtnombre.Text


If xopcion = 1 Then
sql = cs & ",'" & nom & "'," & ct
miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=prueba009")
miconexion.Open()
micomando = New MySqlCommand("insert into subtprod values(" & sql & ")", miconexion)

micomando.ExecuteNonQuery()
miconexion.Close()
MessageBox.Show("Registro almacenado con exito", "observacion")

ElseIf xopcion = 2 Then
sql = "update subtprod set nomstp='" & nom & "',codt=" & ct & " where codsubtp =" & cs & ""
miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=prueba009")
miconexion.Open()
micomando = New MySqlCommand(sql, miconexion)
micomando.ExecuteNonQuery()
miconexion.Close()
MessageBox.Show("registro Actualizado con exito", "Observacion")

End If

activar(False)

txtcsubtipo.Clear()
txtctipo.Clear()
txtnombre.Clear()

cmdagregar.Enabled = True
cmdguardar.Enabled = False
cmdborrar.Enabled = True
cmdbuscar.Enabled = True
cmdsalir.Enabled = True
cmdeditar.Enabled = True
cmdmayre.Enabled = True
cmdmenre.Enabled = True
cmdsig.Enabled = True
cmdant.Enabled = True
cmddeshace.Enabled = True





End Sub

muchas gracias por la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 02/11/2011, 07:39
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

Hola sachis77 no entendí bien tu pregunta... en que parte del código deseas concatenar?
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #3 (permalink)  
Antiguo 02/11/2011, 07:56
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

si tal vez no explique bien mi problema ,estoy realizando una base de datos para inventarios tengo la tabla tipos y subtipos , la primaria de tipos tengo entendido que debe tambien de ser pprimaria de subtipos y foranea al mismo tiempo, como subtipos tambien tiene su primaria quedaria con 2 primarias en este caso codsubtp y codt, ala hora de ingresar los datos me sale error , no se bien como deben de ir. ???'
  #4 (permalink)  
Antiguo 02/11/2011, 08:00
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

podrias mostrarme como tienes esas 2 tablas(tipo y subtipo)?
EJM:
==============
TIPO
==============
ID(integer)
nombre(varchar)
...


==============
SUBTIPO
==============
....
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #5 (permalink)  
Antiguo 02/11/2011, 08:24
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

create table tproductos(
codt char(10),
nomtprod varchar(40),
primary key(codt));

create table subtprod(
codt char(10),
codsubtp char(10),
nomstp varchar(30),
primary key(codsubtp,codt),
foreign key (codt) references tproductos(codt));
  #6 (permalink)  
Antiguo 02/11/2011, 08:25
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

no los tengo integer en la base de datos pero la tabla de tipos me funciono muy bien
  #7 (permalink)  
Antiguo 02/11/2011, 08:41
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

Viendo bien tu código y según el orden que me estas mostrando de tu tabla, el error radicaria en que al momento de hacer el insert no estar respetando el orden de insercion, mira :
Código MySQL:
Ver original
  1. ===========
  2. subtprod
  3. ===========
  4. codt char(10),
  5. codsubtp char(10),
  6. nomstp varchar(30),
y tu insercion por codigo :
Código vb:
Ver original
  1. cs = Integer.Parse(txtcsubtipo.Text)
  2. ct = Integer.Parse(txtctipo.Text)
  3. nom = txtnombre.Text
  4.  
  5. sql = cs & ",'" & nom & "'," & ct
  6.  
  7. micomando = New MySqlCommand("insert into subtprod values(" & sql & ")", miconexion)

colocas primero el subtp,nombre y luego el ct. En vez de colocar primero ct,subtp,nombre. Como vez tienes que respetar el orden de la inserción. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #8 (permalink)  
Antiguo 02/11/2011, 10:00
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

peo al iniciar la orden de guardar también debe ir primero el código de tipos:
If txtctipo.Text.Length = 0 Then
MessageBox.Show("codigo no valido", "ERROR")
txtctipo.Focus()
Exit Sub
End I

como iria esta parte

sql = "update subtprod set nomstp='" & nom & "' where codt =" & ct & " And codsubtp = " & cs & ""


esta:
micomando = New MySqlCommand("select count(*)from subtprod =" & txtcsubtipo.Text & "", miconexion)
xcantidad = micomando.ExecuteScalar

y esta:

ElseIf xopcion = 2 Then
sql = "update subtprod set nomstp='" & nom & "' where codt =" & ct & " And codsubtp = " & cs & ""
  #9 (permalink)  
Antiguo 02/11/2011, 10:08
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

con los que son update y select no hay problema ya que tú defines que quieres actualizar y qué traer.
Ahora :
Cita:
peo al iniciar la orden de guardar también debe ir primero el código de tipos:
If txtctipo.Text.Length = 0 Then
MessageBox.Show("codigo no valido", "ERROR")
txtctipo.Focus()
Exit Sub
End I
No entendí...
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #10 (permalink)  
Antiguo 02/11/2011, 10:24
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

disculpame por no ser muy clara con mis preguntas , yo habia colocado primero para guardar la condicion con : if txtcsubtipo....te pregunto si en esa condicion tambien debo de colocar primero la condicion con : ctipo osea if txtctipo...
  #11 (permalink)  
Antiguo 02/11/2011, 10:27
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

si el campo es un pk o fk deberia validarse, ya que es un campo obligatorio, ahora si le has puesto como no nulos tambien deben validarse de que no sean vacíos, las validaciones es mejor que la hagas en orden ya que así mantendrás una mejor logica tanto para tí como para el que va a hacer algun cambio al software.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #12 (permalink)  
Antiguo 02/11/2011, 11:33
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

Muchisimas gracias, ya pude resolver este este problema me sirvio de mucho tu atuda. :)
  #13 (permalink)  
Antiguo 02/11/2011, 11:35
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: programacion el visual basic

De Nada Sachis77 cualquier problema que tengas no dudes en preguntar, estaremos dichosos de ayudarlos. Saludos!.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #14 (permalink)  
Antiguo 04/11/2011, 12:44
 
Fecha de Ingreso: octubre-2011
Ubicación: COLOMBIA, Medellín
Mensajes: 42
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: programacion el visual basic

Hola, este es el codigo que tengo para guardar datos en la tabla "articulos" que en la base de datos es :


CREATE TABLE articulos
(codt CHAR(10),
codsubtp CHAR(10),
refer VARCHAR(50),
nombre VARCHAR(50),
prcosto INTEGER,
existencias INTEGER,
codigo INT(10) not null,
nitp CHAR(10) not null,
PRIMARY KEY (codt, codsubtp, refer),
FOREIGN KEY (codt) REFERENCES tproductos (codt),
FOREIGN KEY (codt, codsubtp) REFERENCES subtprod (codt, codsubtp),
FOREIGN KEY (nitp) REFERENCES proveedores (nitp),
FOREIGN KEY (codigo) REFERENCES medidas (codigo));

y en visual el codigo para guardar lo tengo asi:

Private Sub cmdguardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdguardar.Click
Dim ct As Integer
Dim cs As Integer
Dim ref As String
Dim noma As String
Dim vl As Long
Dim ex As Integer
Dim nit As Integer
Dim cod As Integer
Dim sql As String

If txtctipo.Text.Length = 0 Then
MessageBox.Show("codigo no valido", "ERROR")
txtctipo.Focus()
Exit Sub
End If

If xopcion = 1 Then
Dim xcantidad As Long = -1

miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=inventariop")

miconexion.Open()

micomando = New MySqlCommand("select count(*)from articulos where refer='" & txtrefer.Text & "'", miconexion)

xcantidad = micomando.ExecuteScalar
miconexion.Close()
If xcantidad > 0 Then
MessageBox.Show("referencia repetida ", "ERROR")
txtctipo.Focus()
Exit Sub
End If
End If

If txtcsubtipo.Text.Length = 0 Then
MessageBox.Show("descripcion no valida", "ERROR")
txtcsubtipo.Focus()
Exit Sub

ElseIf txtrefer.Text.Length = 0 Then
MessageBox.Show("referencia no valida", "ERROR")
txtrefer.Focus()
Exit Sub

ElseIf txtnomart.Text.Length = 0 Then
MessageBox.Show("referencia no valida", "ERROR")
txtnomart.Focus()
Exit Sub

ElseIf txtvalor.Text.Length = 0 Then
MessageBox.Show("valor no valido", "ERROR")
txtvalor.Focus()
Exit Sub

ElseIf txtexistencia.Text.Length = 0 Then
MessageBox.Show("descripcion no valida", "ERROR")
txtexistencia.Focus()
Exit Sub
ElseIf txtnit.Text.Length = 0 Then
MessageBox.Show("nit no valido", "ERROR")
txtnit.Focus()
Exit Sub

ElseIf txtcodigo.Text.Length = 0 Then
MessageBox.Show("referencia no valida", "ERROR")
txtcodigo.Focus()
Exit Sub
End If

ct = Integer.Parse(txtctipo.Text)
cs = Integer.Parse(txtcsubtipo.Text)
ref = txtrefer.Text
noma = txtnomart.Text
vl = Long.Parse(txtvalor.Text)
ex = Integer.Parse(txtexistencia.Text)
nit = Integer.Parse(txtnit.Text)
cod = Integer.Parse(txtcodigo.Text)

If xopcion = 1 Then
sql = ct & "," & cs & ",'" & ref & "','" & noma & "'," & vl & "," & ex & "," & nit & "," & cod & ""

miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=inventariop")
miconexion.Open()
micomando = New MySqlCommand("insert into articulos values(" & sql & ");", miconexion)

micomando.ExecuteNonQuery()
miconexion.Close()
MessageBox.Show("Registro almacenado con exito", "observacion")

ElseIf xopcion = 2 Then
sql = "update articulos set codigo=" & cod & ", nitp=" & nit & ", existencias=" & ex & ", prcosto=" & vl & " where codt= " & ct & " and codsubtp=" & cs & " and refer='" & ref & "' and nitp=" & nit & " and codigo=" & cod & ""
miconexion = New MySqlConnection("server=localhost;user=root;passwo rd=111;database=inventariop")
miconexion.Open()
micomando = New MySqlCommand(sql, miconexion)
micomando.ExecuteNonQuery()
miconexion.Close()
MessageBox.Show("registro Actualizado con exito", "Observacion")

End If

activar(False)
txtctipo.Clear()
txtcsubtipo.Clear()
txtrefer.Clear()
txtnomart.Clear()
txtvalor.Clear()
txtexistencia.Clear()
txtnit.Clear()
txtcodigo.Clear()

cmdagregar.Enabled = True
cmdguardar.Enabled = False
cmdborrar.Enabled = True
cmdbuscar.Enabled = True
cmdsalir.Enabled = True
cmdeditar.Enabled = True
cmdmayre.Enabled = True
cmdmenre.Enabled = True
cmdsig.Enabled = True
cmdant.Enabled = True
cmddeshace.Enabled = True

End Sub

el error que me aparece es:

Cannot add or update a child row: a foreign key constraint fails (`inventariop`.`articulos`, CONSTRAINT `articulos_ibfk_3` FOREIGN KEY (`nitp`) REFERENCES `proveedores` (`nitp`))


la verdad estoy muy preocupada porque cualquier error me quita mucho tiempo y debo de terminar esta base de datos para hoy , y tanbien realizarle consultas.

Etiquetas: basic, programacion, sql, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:51.