Visual Basic.NET - Generear etiquetas

 
Vista:
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Miguel (281 intervenciones) el 25/03/2023 17:59:23
Tengo este código para generar etiquetas sin la clausula Where me funcionas correctamente solo que no me saca más que la primera etiqueta y si le añado me da error.

Me pueden ayudar a ver porque lo hago mal.

Gracias
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 26/03/2023 10:10:39
Hola Miguel,

Espero estas bien.

Veo un detalle en la frase SQL que dice que es normale de tener una sola etiqueta :

1
2
3
4
... ... ...
                                        INSERT INTO Etiquetas(IdCliente, Nombre, Cp, Municipio, Provincia, Calle) " +
                                      "SELECT T.IdCliente,T.Nombre,R.Cp,M.Municipio,P.Provincia,C.Calle FROM Clientes T" +
                                      "Where T.IdCliente = IdCliente" +   ... ... ...

Con esta clausula WHERE, probablemente que IdCliente tiene un valor único, pue no podes tener muchas etiquetas.
Parece me extraño que WHERE compara T.IdCliente = IdCliente por que Etiquetas es una nueva tabla y cuando es el primero registro, no IdClient tiene valor.y no conozco el resultado de la comparación T.IdCliente = IdCliente.

Buen domingo;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Miguel (281 intervenciones) el 26/03/2023 13:17:55
Hola Phil gracias por la ayuda. Te explico como está este código.
"T.IdCliente" es el índice del cliente y el "IdCliente" es de la tabla de etiquetas es por esa razón que pongo los nombre de la índices y no pongo valores. De echo cuando genere este código lo hice sin la clausula "Where" y me saca la etiqueta correspondiente al primer registro que hay en la tabla. Como nunca había codificado código de SQL para hacer todo el proceso de verificar la existencia de la tabla, borrarla y crearla otra vez y como este proceso necesita una inserción y selección de datos que encima están solo relacionados con la tabla del cliente me ha resultado bastante complejo y estoy probando todo lo que me viene a la mente.

Es por esa razón que lo que pido es que alguien me indique como arreglarlo para que funcione.

Espero que tu también te encuentres bien.

Un saludo y gracias
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 26/03/2023 15:06:03
Porque DROP TABLE Etiquetas a lugar de DELETE FROM Etiquetas ? El método con DELETE conserva toda structura de la tabla, sin los datos. No necesario de recrear la tabla.
Per no es el problema.
Comprendo bien tus explicaciones y la diferencia entre IdCliente de Etiquetas y IdCliente de Clientes. Pero insisto que en la clausula WHERE, la expresion T.IdCliente = IdCliente no pode ser bien porque no tiene valor el IdCliente de Etiquetas a este momento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Miguel (281 intervenciones) el 29/03/2023 23:34:34
Hola Phil no te he contestado antes porque estoy intentando arreglar el correo pues no se la causa que una password que la puse hace unas semanas no me la reconoce y he intentado poner otra paro se me ha bloquedo y no puedo hacer nada. Así que estoy buscando como un loco los pasos que hay que dar para borrar la cuenta de gmail y crear una nueva pero no estoy consiguiendo hacer nada.

He problado con Delete paro al final hace lo mismo que con Drop ya que sigue cargando solo el promer registro.

Un saludo
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 29/03/2023 23:56:12
Hola Miguel,
Oo siento que no funciona.
El error es en la expresión WHERE.
Si tengo poco tiempo mañana, intentaré de escribir misma SQL sobre un ejemplo.
Buenas noches
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 30/03/2023 09:36:55
Hola Miguel,

Cuando ejecute este consulta, no IdCliente existe en tabla Etiquetas, pues, no puedo hacer la clausula WHERE.
Es esta consulta que debe crear los datos de la tabla Etiquetas, tambien el IdCliente.

Es escrito el SQL siguiente sin WHERE y lo crea los datos en la tabla Etiquetas.

1
2
3
INSERT INTO Etiquetas ( IdCliente, Nombre, Calle, Municipio, Provincia )
SELECT Clientes.IdCliente, Clientes.Nombre, Calles.Calle, Municipios.Municipio, Provincias.Provincia
FROM Provincias INNER JOIN ((Calles INNER JOIN Clientes ON Calles.IdCalle = Clientes.IdCalle) INNER JOIN Municipios ON Clientes.IdCp = Municipios.IdMunicipios) ON Provincias.IdProv = Municipios.Provincia;

Este código SQL es mas o menos mismo que tuyo. Debes ajustarlo un poco.

Adjunto las imágenes de mis pruebas. No estoy seguro de la corrección de mis tablas y sus relaciones, quizá existe errores pero no este debería cambiar tu ruta de solución. Cuando me envias las esquemas de tus tablas y sus relaciones, puedo corregir mi DB et te dar mejor resultado.

Que tenga un buen dia ... (aqui llueve ... )
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 30/03/2023 11:04:10
Sobre tu problema GMail ...

No puedes suprimir una cuenta sin saber que es el password, pero puedes dejar de utilizarlo,.lo abandonar.
Y puedes crear otra cuenta, puedes tener muchos en mismo proveedor como GMail.

...
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 30/03/2023 18:35:11
Continuación con las etiquetas.

Cierto, la solución para crear las etiquetas es bien ce escribir el comando INSERT sin clausula WHERE.
Cuando quieres una sola etiqueta para un cliente, puedes hacer una simple consulta con WHERE en la tabla Etiquetas.

Mi resultado de este mañana viene de un DB que no es bien estructurada para este trabajo.
Probablemente que no he comprendido bien la estructura en leyendo tu texto SQL.

He hecho un ejemplo con un DB bien organizada para dar las direcciones correctas de los clientes.

Adjunto el documento MiDB2.Zip con los esquemas de las tablas, sus datos, y el comando INSERT que llena la tabla Etiquetas.

Espero que este te ayudará…
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
sin imagen de perfil
Val: 344
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Miguel (281 intervenciones) el 31/03/2023 19:16:01
Hola Phil el problema de las etiqueta es que cuando quieres imprimirlas tienes que tener la opción de imprimir todas o una solo. Es por esa razón que tiene que haber una clausula WHERE solo que en este código yo solo lo tengo recogido el caso general para comprobar que funciona y luego haría el caso particular. Es evidente que se nos escapa algún detalle per ignoro cual.

Un saludo
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Generear etiquetas

Publicado por Phil Rob (1554 intervenciones) el 31/03/2023 20:21:11
Hola Miguel,

Para utilizar la cláusula WHERE, debes la poner después el resto del comando INSERT.

Este mañana, he te enviado el ejemplo:

INSERT INTO Etiquetas ( IdCliente, Nombre, NumeroEnCalle, Calle, Municipio, Provincia )
SELECT Clientes.IdCliente, Clientes.Nombre, Clientes.NumeroEnCalle, Calles.Calle, Municipios.Municipio, Provincias.Provincia
FROM (((Clientes
INNER JOIN Calles
ON Clientes.IdCalleCliente = Calles.IdCalle)
INNER JOIN Municipios
ON Calles.IdMunicipioCalle = Municipios.IdMunicipio)
INNER JOIN Provincias
ON Municipios.IdProvinciaMunicipio = Provincias.IdProvincia);


Para utilizar WHERE en este código, debes escribir:

INSERT INTO Etiquetas ( IdCliente, Nombre, NumeroEnCalle, Calle, Municipio, Provincia )
SELECT Clientes.IdCliente, Clientes.Nombre, Clientes.NumeroEnCalle, Calles.Calle, Municipios.Municipio, Provincias.Provincia
FROM (((Clientes
INNER JOIN Calles
ON Clientes.IdCalleCliente = Calles.IdCalle)
INNER JOIN Municipios
ON Calles.IdMunicipioCalle = Municipios.IdMunicipio)
INNER JOIN Provincias
ON Municipios.IdProvinciaMunicipio = Provincias.IdProvincia)
WHERE Nombre = ‘Miguel’;

Es solamente un ejemplo, escribes el WHERE que te gusta. Pienso que WHERE Clientes.IdCliente > 0 debería dar todas etiquetas.

También, podes escribir WHERE en una consulta sobre la tabla Etiquetas, sería mucho más simple :

SELECT * FROM Etiquetas WHERE Nombre = ‘Miguel’
o
SELECT * FROM Etiquetas WHERE Clientes.IdCliente > 0



Buenas noches ...
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