SQL - update en vb6

   
Vista:

update en vb6

Publicado por sergio merlo (2 intervenciones) el 04/03/2012 20:34:25
tengo esta sentencia y me da error de sintaxis y no encuentro el error


Conn1.Execute "Update stoc1 set stoc_nom,stoc_psi,stoc_iva,stoc_tip,stoc_bar,stoc_uni,stoc_ofe,stoc_pro =(select stoc_nom,stoc_psi,stoc_iva,stoc_tip,stoc_bar,stoc_uni,stoc_ofe,stoc_pro from altatemp where stoc1.stoc_tro = altatemp.stoc_tro)"
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

update en vb6

Publicado por leonardo_josue (877 intervenciones) el 05/03/2012 18:56:42
Hola Sergio Merlo:

Nunca había visto una sintaxis para UPDATE como la que estás manejando, deberías comenzar por decirnos con que BD estás trabajando, pues hasta donde sé ningún DBMS soporta algo como lo que estás intentando hacer. El estándar para la sentencia UPDATE que marca SQL define la función UPDATE de la siguiente manera:

1
2
3
UPDATE tabla
SET campo1 = valor1, campo2 = valor2, .........., campoN = valor N
where condición


es decir POR CADA CAMPO HAY UNA ASIGNACIÓN DE UN VALOR. Creo que tú estás confundiendo la sintaxis con la sel INSERT... en la función INSERT listas todos los campos y puedes recuperarlos de un select:

1
2
INSERT INTO tabla (campo1, campo2,.........,) campoN
VALUES (valor1, valor2,...... valorN)


En MySQL por ejemplo, para actualizar una tabla a partir de los datos de otra tabla sería más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
mysql> CREATE TABLE tabla1 (id INT, campo VARCHAR(10));
Query OK, 0 rows affected (0.08 sec)
 
mysql> CREATE TABLE tabla2 (id INT, campo VARCHAR(10));
Query OK, 0 rows affected (0.11 sec)
 
mysql> INSERT INTO tabla1 VALUES (1, 'uno'),(2, 'dos'),(3, 'tres');
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM tabla1;
+------+-------+
| id   | campo |
+------+-------+
|    1 | uno   |
|    2 | dos   |
|    3 | tres  |
+------+-------+
3 rows in set (0.00 sec)
 
mysql> INSERT INTO tabla2 VALUES (1, 'otro uno'),(2, 'two'),(4, 'otro tres');
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0
 
mysql> SELECT * FROM tabla2;
+------+-----------+
| id   | campo     |
+------+-----------+
|    1 | otro uno  |
|    2 | two       |
|    4 | otro tres |
+------+-----------+
3 rows in set (0.01 sec)
 
mysql> UPDATE tabla1, tabla2 SET tabla1.campo = tabla2.campo WHERE tabla1.id = tabla2.id;
Query OK, 2 rows affected (0.03 sec)
Rows matched: 2  Changed: 2  Warnings: 0
 
mysql> SELECT * FROM tabla1;
+------+----------+
| id   | campo    |
+------+----------+
|    1 | otro uno |
|    2 | two      |
|    3 | tres     |
+------+----------+
3 rows in set (0.00 sec)


Sin embargo esta sintaxis NO ES SOPORTADA POR TODOS LOS DBMS, por lo tanto habría que revisar qué alternativas te ofrece la BD con la que estás trabajando.

Saludos
Leo.
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