Borrar registros de una tablay guardar los cambios
Que tal recurro a ti o a ustedes para realizar una petición de ayuda respecto a est nuevo problema que ma aqueja, bien les explico en que consist y ojala pudieran ayudarme, resulta que tengo una tabla en access2000 llamada "Ordenes" la cual tiene varias columnas una de ellas se llama "Tipo_Orden" en esta tabla hay varios registros lo que necesito hacer es que mediant un formulario en visual basic 6 pueda eliminar ciertos registros de la tabla, es decir con un botón en visual basic 6 borre todos los registro que en la columna "Tipo_Orden sean = a DAÑOS" de la tabla "Ordenes" y al final m guard los cambios en la base de datos y m muestre el resultado final en un datagrid, como le puedo hacer.
1 respuesta
Respuesta de kresh
1
1
kresh, Visual Basic 6 y Access, Avanzado
Te ayudo en lo que necesitas, haz esto:
Para Eliminar Registros en una base de datos, realiza una consulta con ésta sintaxis
Delete Campos
From Tu_Tabla
Where Condiciones
Ten en cuenta algo, si NO estableces condiciones, SE BORRARA LA TABLA COMPLETA, TE DEJARÁ SIN REGISTROS LA MISMA, es importante que le coloques condición, en tu caso sería así al consulta:
Delete TipoOrden
From Ordenes
Where TipoOrden = 'Daños'
Si recuerdas, el otro día te pasé una conexión desde el DataEnvironMent, si lo deseas puedes realizar un comando en el Dev y utilizarlo para ejecutar ésta consulta y realizar la eliminación, ten en cuenta ésto también:
Para realizar la consulta desde el formulario, lo haces de la manera simple
DataEnvironment1. CmdBorrarRegistros
(Recuerda que cmdBorraRegistros es opcional, según el nombre que le pongas tu al comando que realices en el Dev, el nombre que uso yo, es un ejemplo)
Y ya se eliminaran todos los que en el campo sea "Daños"
Ahora, si bien deseas establecer la condición manualmente, lo haces así:
Delete *
From Ordenes
Where TipoOrden =unStr
Dónde unStr será el parámetro que le pases para eliminar, ej:
Dim Condicion As String
Condicion = "Daños"
DataEnvironment1. CmdBorrarRegistros Condicion
Y eliminará los registros con la condición que deseas, estableciéndola manualmente, luego para verlo desde un DataGrid, coloca éste código:
Primero que nada, vé a la propiedad del DataGrid llamada "Datasource" y selecciona el DataEnvironMent, luego en la propiedad de arriba (DataMember) Y colócale el Recordset,(hablo del que se refiere a la tabla, en tu caso sería la tabla Ordenes)
Y para que te lo actualize al Realizar la consulta(ya sea de borrar, actualizar, agregar etc), le colocas este código:
Set DataGrid1.DataSource = Nothing
DataenvironMent1.Recordset.Requery
Set DataGrid.DataSource = Dev
Recuerda que este código va luego de que realices la consulta que deseas.
Si tienes problemas, o alguna duda te surge, ya sabes, comentame,
Para Eliminar Registros en una base de datos, realiza una consulta con ésta sintaxis
Delete Campos
From Tu_Tabla
Where Condiciones
Ten en cuenta algo, si NO estableces condiciones, SE BORRARA LA TABLA COMPLETA, TE DEJARÁ SIN REGISTROS LA MISMA, es importante que le coloques condición, en tu caso sería así al consulta:
Delete TipoOrden
From Ordenes
Where TipoOrden = 'Daños'
Si recuerdas, el otro día te pasé una conexión desde el DataEnvironMent, si lo deseas puedes realizar un comando en el Dev y utilizarlo para ejecutar ésta consulta y realizar la eliminación, ten en cuenta ésto también:
Para realizar la consulta desde el formulario, lo haces de la manera simple
DataEnvironment1. CmdBorrarRegistros
(Recuerda que cmdBorraRegistros es opcional, según el nombre que le pongas tu al comando que realices en el Dev, el nombre que uso yo, es un ejemplo)
Y ya se eliminaran todos los que en el campo sea "Daños"
Ahora, si bien deseas establecer la condición manualmente, lo haces así:
Delete *
From Ordenes
Where TipoOrden =unStr
Dónde unStr será el parámetro que le pases para eliminar, ej:
Dim Condicion As String
Condicion = "Daños"
DataEnvironment1. CmdBorrarRegistros Condicion
Y eliminará los registros con la condición que deseas, estableciéndola manualmente, luego para verlo desde un DataGrid, coloca éste código:
Primero que nada, vé a la propiedad del DataGrid llamada "Datasource" y selecciona el DataEnvironMent, luego en la propiedad de arriba (DataMember) Y colócale el Recordset,(hablo del que se refiere a la tabla, en tu caso sería la tabla Ordenes)
Y para que te lo actualize al Realizar la consulta(ya sea de borrar, actualizar, agregar etc), le colocas este código:
Set DataGrid1.DataSource = Nothing
DataenvironMent1.Recordset.Requery
Set DataGrid.DataSource = Dev
Recuerda que este código va luego de que realices la consulta que deseas.
Si tienes problemas, o alguna duda te surge, ya sabes, comentame,
¿Hola muchas gracias de nuevo m haz salvado oye abusando de tu dedicación e inteligencia podrías ayudarme en una cosa más si? Mira t explico en la tabla 'ordenes' hay unos registros llamados daños con el sig formato " DAÑO ertym0ex, efasty" donde "DAÑO" es una columna y el restos deben ser cada 2 letras una columna pero todo est dato aparece en la tabla llamada "ordenes" donde "DAÑO" esta en la columna tipo y el resto esta en la columna descripción, ahora lo que quiero es que mediant un botón en visual basic 6 la columna con el dato DAÑO la pase a una nueva tabla y el resto de las letras las separe cada 2 letras en una columna y después de una coma genere un registro nuevo = cada 2 letras seria una columna tienes una idea de como le puedo hacer para que esto quede así
TABLA 1 TABLA 2
tipo descripción tipo campo1 campo2 campo3 campo4
DAÑO ertym0ex,efasty DAÑO er ty m0 ex
DAÑO ef as ty
asi deberan kedar los datos gracias x tu ayuda
TABLA 1 TABLA 2
tipo descripción tipo campo1 campo2 campo3 campo4
DAÑO ertym0ex,efasty DAÑO er ty m0 ex
DAÑO ef as ty
asi deberan kedar los datos gracias x tu ayuda
De nada, lo que deseas te lo voy a poner cómo debes hacerlo, y tu lo aplicas a lo que necesite, ¿ok?
Bien, en primer lugar debes extraer los datos de la primer tabla,
En tu caso, ¿sólo extraríamos la "Descripción" porque razón? Si lo que deseas es crear en la tabla 2 un nuevo registro SÓLO CON EL TIPO DAÑO, NO HAY OTRA OPCIÓN, POR LO TANTO SOLO AGREGAREMOS COMO PARTE INICIAL DEL INSERT INTO EL CAMPO DAÑO, espero me sigas.
Ahora, luego de extraer la descripción debes hacer lo siguiente
1- Pasarla a un string
En segundo lugar debes recorrer todo el string e ir verificando, te indicaré como (es bastante complicado, presta atención, también ten en cuenta que tomaré como ejemplo lo que me has puesto, o sea
tipo Descripción
DAÑO ertym0ex, efasty
Ok)
En caso de que tu cadena contenga más de una coma, deberás buscar la forma de aplicar el código para que funcione, ya que funciona perfectamente para una cadena con una coma de por medio, ¿me explico? No hay algo estándar y fue lo que pude hacer lo más rápido posible para que pudieras tener una respuesta efecitva en poco tiempo.
Hay te va el código :
Option Explicit
Dim strFinal As String
Dim SegundoStr As String 'para extraer lo que hay despues de la coma
Dim strTotal As String
Private Sub Command1_Click()
Dim strDesc As String
Dim Recorrer As Variant
Dim strTemp As String
Dim Extrae As String
strDesc = "ertym0ex,efasty" 'asignamos el valor, esto acomodalo a tu preferencia
strTotal = strDesc 'string total
'para que le asigne el valoor, cuando lo extraigas de tu base de datos
If TieneComa(strDesc) = True Then 'verificamos si tiene coma
strDesc = Left(strDesc, InStr(strDesc, ",") - 1) 'extraemos la primer cadena antes de la coma
strTemp = strDesc 'guardamos el string en variable temporal
strDesc = Mid(strDesc, 1, 2) 'extraemos los primeros 2
If Vacio(strDesc) = True Then Exit Sub 'si terminamos de recorrer la variable
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text2.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 3, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text3.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 5, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text4.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 7, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text5.Text = strDesc
End If
End If
'ahora vamos con el segundo string
'SegundoStr = Left(SegundoStr, InStr(SegundoStr, ",") - 1) 'extraemos la primer cadena antes de la coma
strTemp = SegundoStr 'guardamos el string en variable temporal
SegundoStr = Mid(SegundoStr, 1, 2) 'extraemos los primeros 2
If Vacio(SegundoStr) = True Then Exit Sub 'si terminamos de recorrer la variable
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text8.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 3, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text9.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 5, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text10.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 7, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text11.Text = SegundoStr
End If
End Sub
Public Function Vacio(ByVal strVar As String) As Boolean
If Trim(Len(strVar)) = 0 Then
Vacio = True
Else
Vacio = False
End If
End Function
Public Function VerificarSolo(ByVal strVar As String) As Boolean
Dim varStr As String
varStr = strVar
If Len(Trim(varStr)) = 2 Then
VerificarSolo = True
Else
VerificarSolo = False
End If
End Function
Public Function TieneComa(strVar As String) As Boolean
Dim Recorre As Variant 'para recorrer el string
Dim x As Integer
Dim Extrae As String 'recuerda que me pediste, que cada vezs que haya
'una coma, lo que sigue es un nuevo registro
'bien, estas 3 variables son para eso
strFinal = strVar
strFinal = Replace(strFinal, ",", "x")
If Not strFinal = strVar Then
TieneComa = True
For Each Recorre In Split(strTotal, ",") 'recorremos el string
Extrae = Recorre 'tomamos las partes de a poco
x = x + 1
If x = 2 Then 'asi extraemos el str despues de la coma
SegundoStr = Extrae
Exit For
End If
Next
Else
TieneComa = False
End If
End Function
Está comentado por si no comprendes algo, igual si algo te ha quedado duda, ya sabes puedes preguntar, para hacer esto, necesitas 1 CommandButton, y 8 TextBox (estos pueden ser variables, solo lo hice para que veas como funciona)
Luego me cuentas, y me olvidaba, para que lo agregues a la base de datos, como nuevo registro, creo que ya lo he dicho:
Insert Into Tu_Tabla
(NombreCampo1, NombreCampo2, NombreCampo3... NombreCampo N)
Values
(ValorCampo1, ValorCampo2, ValorCampo3... ValorCampo N)
Bien, si algo me ha faltado me comentas, y si no deseas leer este de código en la web, te dejo un Enlace (RapidShare) Para descargar el código Fuente, un saludo.
PD: El valor de la Variable "strDesc" es el valor del campo "Descripción" de tu database, debes extraerlo y pasárselo a esa variable, sino sabes como hacer, dímelo.
Bien, en primer lugar debes extraer los datos de la primer tabla,
En tu caso, ¿sólo extraríamos la "Descripción" porque razón? Si lo que deseas es crear en la tabla 2 un nuevo registro SÓLO CON EL TIPO DAÑO, NO HAY OTRA OPCIÓN, POR LO TANTO SOLO AGREGAREMOS COMO PARTE INICIAL DEL INSERT INTO EL CAMPO DAÑO, espero me sigas.
Ahora, luego de extraer la descripción debes hacer lo siguiente
1- Pasarla a un string
En segundo lugar debes recorrer todo el string e ir verificando, te indicaré como (es bastante complicado, presta atención, también ten en cuenta que tomaré como ejemplo lo que me has puesto, o sea
tipo Descripción
DAÑO ertym0ex, efasty
Ok)
En caso de que tu cadena contenga más de una coma, deberás buscar la forma de aplicar el código para que funcione, ya que funciona perfectamente para una cadena con una coma de por medio, ¿me explico? No hay algo estándar y fue lo que pude hacer lo más rápido posible para que pudieras tener una respuesta efecitva en poco tiempo.
Hay te va el código :
Option Explicit
Dim strFinal As String
Dim SegundoStr As String 'para extraer lo que hay despues de la coma
Dim strTotal As String
Private Sub Command1_Click()
Dim strDesc As String
Dim Recorrer As Variant
Dim strTemp As String
Dim Extrae As String
strDesc = "ertym0ex,efasty" 'asignamos el valor, esto acomodalo a tu preferencia
strTotal = strDesc 'string total
'para que le asigne el valoor, cuando lo extraigas de tu base de datos
If TieneComa(strDesc) = True Then 'verificamos si tiene coma
strDesc = Left(strDesc, InStr(strDesc, ",") - 1) 'extraemos la primer cadena antes de la coma
strTemp = strDesc 'guardamos el string en variable temporal
strDesc = Mid(strDesc, 1, 2) 'extraemos los primeros 2
If Vacio(strDesc) = True Then Exit Sub 'si terminamos de recorrer la variable
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text2.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 3, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text3.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 5, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text4.Text = strDesc
End If
strDesc = strTemp 'volvemos a darle el valor inicial a la variable
strDesc = Mid(strDesc, 7, 2)
If Vacio(strDesc) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(strDesc) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text5.Text = strDesc
End If
End If
'ahora vamos con el segundo string
'SegundoStr = Left(SegundoStr, InStr(SegundoStr, ",") - 1) 'extraemos la primer cadena antes de la coma
strTemp = SegundoStr 'guardamos el string en variable temporal
SegundoStr = Mid(SegundoStr, 1, 2) 'extraemos los primeros 2
If Vacio(SegundoStr) = True Then Exit Sub 'si terminamos de recorrer la variable
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text8.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 3, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text9.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 5, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text10.Text = SegundoStr
End If
SegundoStr = strTemp 'volvemos a darle el valor inicial a la variable
SegundoStr = Mid(SegundoStr, 7, 2)
If Vacio(SegundoStr) = True Then Exit Sub 'sino hay nada nos vamos del evento
If VerificarSolo(SegundoStr) = True Then 'verificamos que sean 2 caracteres, de lo contrario, es el ultimo de nuestra cadena
Text11.Text = SegundoStr
End If
End Sub
Public Function Vacio(ByVal strVar As String) As Boolean
If Trim(Len(strVar)) = 0 Then
Vacio = True
Else
Vacio = False
End If
End Function
Public Function VerificarSolo(ByVal strVar As String) As Boolean
Dim varStr As String
varStr = strVar
If Len(Trim(varStr)) = 2 Then
VerificarSolo = True
Else
VerificarSolo = False
End If
End Function
Public Function TieneComa(strVar As String) As Boolean
Dim Recorre As Variant 'para recorrer el string
Dim x As Integer
Dim Extrae As String 'recuerda que me pediste, que cada vezs que haya
'una coma, lo que sigue es un nuevo registro
'bien, estas 3 variables son para eso
strFinal = strVar
strFinal = Replace(strFinal, ",", "x")
If Not strFinal = strVar Then
TieneComa = True
For Each Recorre In Split(strTotal, ",") 'recorremos el string
Extrae = Recorre 'tomamos las partes de a poco
x = x + 1
If x = 2 Then 'asi extraemos el str despues de la coma
SegundoStr = Extrae
Exit For
End If
Next
Else
TieneComa = False
End If
End Function
Está comentado por si no comprendes algo, igual si algo te ha quedado duda, ya sabes puedes preguntar, para hacer esto, necesitas 1 CommandButton, y 8 TextBox (estos pueden ser variables, solo lo hice para que veas como funciona)
Luego me cuentas, y me olvidaba, para que lo agregues a la base de datos, como nuevo registro, creo que ya lo he dicho:
Insert Into Tu_Tabla
(NombreCampo1, NombreCampo2, NombreCampo3... NombreCampo N)
Values
(ValorCampo1, ValorCampo2, ValorCampo3... ValorCampo N)
Bien, si algo me ha faltado me comentas, y si no deseas leer este de código en la web, te dejo un Enlace (RapidShare) Para descargar el código Fuente, un saludo.
PD: El valor de la Variable "strDesc" es el valor del campo "Descripción" de tu database, debes extraerlo y pasárselo a esa variable, sino sabes como hacer, dímelo.
Ok muchas gracias hasta ahorita creo que si ha funcionado tu ayuda pero ahora tengo otra pregunta sobre el mismo caso simplemente que ahora es un caso inverso tengo 4 campos de una tabla llamada TABLA 1 y tabla2
tabla1 tabla2
C1 C2 C3 C4 C5 A1 A2
VIN1 ER EM CS 05 VIN1 EREMCS05, ASCXCS03
VIN1 AS CX CS 03 VIN2 TGADSS05
VIN5 TG AD SS 05
Entonces lo que debo hacer es que mediant un botón busq en la tabla 1 en el campo C1 y todos los que tenga el mismo VIN los junte en un nuevo registro en tabla 2 si vez en tabla 2 paso dos veces VIN1 y separo con una coma indicando que junto un nuevo registro por favor si podrías ayudarme y prometo ya no molestar gracias
tabla1 tabla2
C1 C2 C3 C4 C5 A1 A2
VIN1 ER EM CS 05 VIN1 EREMCS05, ASCXCS03
VIN1 AS CX CS 03 VIN2 TGADSS05
VIN5 TG AD SS 05
Entonces lo que debo hacer es que mediant un botón busq en la tabla 1 en el campo C1 y todos los que tenga el mismo VIN los junte en un nuevo registro en tabla 2 si vez en tabla 2 paso dos veces VIN1 y separo con una coma indicando que junto un nuevo registro por favor si podrías ayudarme y prometo ya no molestar gracias
Debes poner que cuando vaya a agregar el nuevo registro a la tabla, cómo condición de la consulta, deba ser igual que el nombre del primer registro de la tabla 2, o sea:
TABLA1 TABLA2
C1 C2 C3 C4 C5 A1 A2
VIN1 ER EM CS 05 VIN1 EREMCS05, ASCXCS03
VIN1 AS CX CS 03
VIN5 TG AD SS 05
En este instante aún no ha agregado el segundo vin, entonces cuando lo vas a agregar, que lo compare con el de Tabla 2 y QUE SEA IGUAL, DE LO CONTRARIO, QUE NO LO AGREGUE.
Espero haber sido claro.
TABLA1 TABLA2
C1 C2 C3 C4 C5 A1 A2
VIN1 ER EM CS 05 VIN1 EREMCS05, ASCXCS03
VIN1 AS CX CS 03
VIN5 TG AD SS 05
En este instante aún no ha agregado el segundo vin, entonces cuando lo vas a agregar, que lo compare con el de Tabla 2 y QUE SEA IGUAL, DE LO CONTRARIO, QUE NO LO AGREGUE.
Espero haber sido claro.
- Compartir respuesta
- Anónimo
ahora mismo