Debe estar conectado para participar
Buscar en los foros:


 






Uso de Comodín:
*    coincide cualquier número de caracteres
%    coincide exactamente un caracter

URGENTE ! Necesito ayuda, alguien que sepa programar en VB6 y consultas SQL ?

No hay Etiquetas
Entrada
Extreme Level

carlitox091

entradas: 1263

00:23 02/11/2009

1

Bueno , mañana tengo entrega de un tp definitivo y me tira un error bastante complejo, necesitaria alguien que me de una mano por msn .

Si hay alguien que sepa algo de esto , le pido por favor que me de una manito , por que este tp es casi como que me recibo si lo apruebo .

Tiene que saber algo sobre Alta, baja, de registros mediante recordset y consultas SQL .

Un saludo y gracias de antemano

Los errores que tira son los siguientes :

Que un campo no puede contener un valor Null. (en alta)

Y ese campo en la base de datos no esta como autonumerico (la bd no la puedo modificar) y cuando quiero updatear el recordset o me lo toma como null (si no ingreso valor) , o si ingreso valor me tira un error de parametros duplicados , ya que el campo es clave principal.

El otro error, que no es un error en si , pero la funcion no hace lo que yo quiero que haga es que en baja , cuando selecciono un registro del datagrid, cuando pongo eliminar me los elimina en cascada con otros mas, (porque la consulta es un INNER JOIN) , pero yo necesito de esa consulta para realizar tablas y me gustaria saber si hay alguna manera de eliminar la eliminacion de cascada y que me borre solo el registro seleccionado..

Muchas gracias

Powered by:
Intel Core 2 Duo E4400 @ 2.80GHZ / Gigabyte P35-DS3L / WD 250GB 16MB Buffer / 2X1GB SuperTalent 667 CL5 @ 700 4 4 4 12 / VTB 8024 FULL + VTB COL-60-B Dual Rail 600w / XFX 8800GS Alpha Dog Edition

Entry Level

emx

entradas: 101

02:39 02/11/2009

2
Cita Iniciado por carlitox091
Ver Mensaje
Que un campo no puede contener un valor Null. (en alta)

Y ese campo en la base de datos no esta como autonumerico (la bd no la puedo modificar) y cuando quiero updatear el recordset o me lo toma como null (si no ingreso valor) , o si ingreso valor me tira un error de parametros duplicados , ya que el campo es clave principal.

Los campos que son clave principal no aceptan nulos, tampoco valores repetidos porque esa es justamente la gracia de ser clave principal.

La BD es access? si es así proba desde access armar un SQL con el insert hasta que no de error: INSERT INTO tabla(campo1, campo2) VALUES(valor1, valor2)

Luego este mismo insert lo ejecutas desde VB pasándole los parámetros correspondientes.

Cita Iniciado por carlitox091
Ver Mensaje
El otro error, que no es un error en si , pero la funcion no hace lo que yo quiero que haga es que en baja , cuando selecciono un registro del datagrid, cuando pongo eliminar me los elimina en cascada con otros mas, (porque la consulta es un INNER JOIN) , pero yo necesito de esa consulta para realizar tablas y me gustaria saber si hay alguna manera de eliminar la eliminacion de cascada y que me borre solo el registro seleccionado..

No entiendo que querés hacer acá, pero si tenés ambas tablas relacionadas y tienen definida integridad referencial entre ellas con "cascade delete", cuando eliminas algún registro de la tabla principal es normal que se quieran eliminar registros "hijos" en otra tabla, por ejemplo si tenés una tabla de clientes y otra de pedidos, y borrás un cliente, los pedidos de ese cliente quedarían apuntando a un cliente inexistente, al relacionarlas de esta forma se depuran automáticamente. Para eliminar este comportamiento hay que modificar o quitar la relación.

Suerte!

Hardcore Extreme Level

kglacius

entradas: 10191

02:50 02/11/2009

3

efectivamente es como dice emx (ambas cosas)

La pregunta es ¿porque no podes modificar la tabla? ¿no entiendo como es que necesitas una consulta que llama un "CASCADE DELETE" para generar tablas?…

SIGAN ROMPIENDO LAS BOLAS CON LAS MODERACIONES Y SE VAN A FUGAR TODOS (LOS QUE QUEDAN)
Mineria Contaminante

Extreme Level

carlitox091

entradas: 1263

07:45 02/11/2009

4

No, en la 2º parte , lo unico que quiero es que me elimine el registro seleccionado en el datagrid, pero lo que hace es eliminar en cascada, o sea yo NO QUIERO que elimine en cascada.

saludo y gracias por las respuetas

pd: lo del insert into ,para que seria , no entiendo la logica de como funcionaria ?

Powered by:
Intel Core 2 Duo E4400 @ 2.80GHZ / Gigabyte P35-DS3L / WD 250GB 16MB Buffer / 2X1GB SuperTalent 667 CL5 @ 700 4 4 4 12 / VTB 8024 FULL + VTB COL-60-B Dual Rail 600w / XFX 8800GS Alpha Dog Edition

Nuevo miembro

Archu

entradas: 6

09:22 02/11/2009

5
Cita Iniciado por carlitox091
Ver Mensaje
No, en la 2º parte , lo unico que quiero es que me elimine el registro seleccionado en el datagrid, pero lo que hace es eliminar en cascada, o sea yo NO QUIERO que elimine en cascada.

Si elimina en cascada en porque así esta definido en algun lado. Fijate las relaciones entre tablas y también en la sentencia SQL que ejecuta cuando borras el registro.
Quitas la integridad referencial entre ellas y modificas la sentencia DELETE del SQL

Cita Iniciado por carlitox091
Ver Mensaje
pd: lo del insert into ,para que seria , no entiendo la logica de como funcionaria ?

el INSERT es para… insertar registros en una BD. La logica es sencilla, es una sentencia SQL cuyo cometido es el que su palabra indica…. INSERTar
Como te explicaron en el post anterior: INSERT INTO Tabla (campo1, campo2) indica en en que tabla vas a agregar el/los registro/s indicandole los campos y VALUES(valor1,valor2) los datos que debe grabar en los campos indicados.
Ejemplo:
INSERT INTO Persona (nombre,apellido) VALUES('pepe','perez')
Donde
- Persona es la tabla
- Nombre y apellido son campos de la tabla persona
- 'pepe' es el valor que vas a grabar en el campo nombre de la tabla persona y
- 'perez' es el valor que vas a grabar en el campo apellido

Se entendió ?

Extreme Level

carlitox091

entradas: 1263

09:42 02/11/2009

6

Si, se entendio perfectamente lo de INSERT, muchas gracias,

Lo unico que eliminar en cascada es el unico problema que tengo , o sea no quiero eliminar en cascada , pero automaticamente lo elimina

salu2

Powered by:
Intel Core 2 Duo E4400 @ 2.80GHZ / Gigabyte P35-DS3L / WD 250GB 16MB Buffer / 2X1GB SuperTalent 667 CL5 @ 700 4 4 4 12 / VTB 8024 FULL + VTB COL-60-B Dual Rail 600w / XFX 8800GS Alpha Dog Edition

Nuevo miembro

Archu

entradas: 6

09:51 02/11/2009

7
Cita Iniciado por carlitox091
Ver Mensaje
Si, se entendio perfectamente lo de INSERT, muchas gracias,

Lo unico que eliminar en cascada es el unico problema que tengo , o sea no quiero eliminar en cascada , pero automaticamente lo elimina

salu2

La eliminación en cascada tiene la finalidad de mantemer la INTEGRIDAD de los datos.
Para que no elimine en cascada vas atener que modificar algo en la BD, realción entre las tablas por ejemplo.
Que estas usando ?? Access ?? Si es asi, abrilo y fijate el grafico de "Relaciones". Si existe el grafico elimina las lineas de relaciones entre las tablas y proba lo que queres hacer.
La otra, fijate la sentencia que se ejecuta cuando queres borrar un registro.
Debe ejecutarse uno o más DELETEs en algún lado, revisalo.

Saludos

Entry Level

dickstein_5

entradas: 80

23:14 02/11/2009

8

Yo estuve usando hasta el año pasado el VB6. Ahora estoy con C#….pero es masomenos lo mismo.
Fijate que cuando haces las relaciones en la BD de no poner la integridad referencial….es medio alpedo aveces…y genera este tipo de problemas.
Cuando haces un delete de por ej: un cliente….si haces integridad referencial con otra tabla….va a ocacionar problemas.
Por eso te recomiendo hacer la relacion sin integridad referecial.
Respcto al insert me parece que esta mas que claro como lo explicaron mas arriba.
y para cuando quieras actulizar….usas la sentencia UPDATE tabla SET campo = [parametro1], campo2 = [parametro2] y asi…