Casa
Top.Mail.Ru Yandeks.Metrika
Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

abajo

Si puede haber valores de parámetros de consulta vacíos en SQL Encontrar ramas similares


shakh   (2001-12-03 20:29) [0]

Buen dia Hay una base de datos (access2000). Hay una interfaz de usuario (. Exe). La comunicación entre la interfaz y la base de datos se produce a través de consultas ADO y SQL. Hay un conjunto de formularios para completar varias tablas de la base de datos. Al mismo tiempo, algunos Edit "s en el formulario pueden dejarse vacíos, es decir, no contienen ningún valor. Y ahora la pregunta es: ¿es posible enviar a través de SQL una solicitud para agregar (actualizar) la tabla si ALGUNOS CAMPOS de los datos de la solicitud están VACÍOS (campo =" ") ??? Esto se trata principalmente de campos de texto.
Por supuesto, hay una opción para verificar el valor del campo para "vacío" y formar una consulta dinámicamente, pero si hay partes 20 de dichos campos, entonces esta es una construcción bastante engorrosa.



Котелок   (2001-12-04 07:35) [1]

Can.

Por ejemplo:

insertar en la tabla (column1, column2) valores (: col1 ,: col2)

Y luego simplemente asigna a los parámetros los valores de esas ediciones que deberían ser.
Y si la edición estaba vacía, también se inserta un campo vacío.



shakh   (2001-12-04 19:31) [2]

complemento ... bueno, bien. y si se usa el mismo componente AdoQuery para consultas diferentes, entonces el número de parámetros puede ser diferente. y si escribe algo como AdoQuery1.SQL.Add ("insertar en la tabla (col1, col2) valores" + Edit1.Text + "," + Edit2.text + ")"); luego, con valores vacíos en Edit1 o Edit2, aparece un error sobre un tipo de variable no válido o que el campo no tiene un parámetro predeterminado; (
y realmente no quiero arrastrar un montón de parámetros de consulta estáticos



Delirium   (2001-12-04 20:08) [3]

Pero, ¿qué le impide pasar valores "vacíos" si tiene campos, por supuesto que no son nulos?



Котелок   (2001-12-05 00:46) [4]

Si debe tener líneas en ediciones, intente así ...

AdoQuery1.SQL.Add ("insertar en la tabla (col1, col2) valores" + "" "" + Edit1.Text + "" "" + "," + "" "" + Edit2.text + "" "" + ") ");
Con una indicación explícita de que se trata de una cadena.
Aunque a través de parambyname es aún más confiable.



shakh   (2001-12-05 02:08) [5]

Y una adición más.
tal vez le expliqué mal dónde el perro revolvió%)
hay una consulta AdoQuery1.SQL.Add ("insert into table (col1, col2) valores (" + "" "" + Edit1.Text + "" "" + "," + "" "" + Edit2.text + "" "" + ")");
Todo está claro aquí. pero si en el formulario al ingresar datos Edit1 (por ejemplo) se dejó vacío, al ejecutar esta solicitud, Egor rastrea. Por lo tanto, me gustaría deshacerme de ellos (de los errores con un costo mínimo).
escribir algo como ... valores (: col1 ,: col2) es ciertamente bueno, pero cuando hay pocos campos, y si hay alrededor de piezas 20, cree todos estos parámetros en el inspector de objetos y luego, sin confundirse en su gran masa , asígneles valores de ediciones; este ya es un número con trucos.
puedes pegar cheques de tipo
si Edit1.Text <> "" entonces enable_field_to_query
¡Pero esto es una perversión completa!



Котелок   (2001-12-05 03:33) [6]

No está claro por qué crear objetos en el inspector?

En cuanto a la verificación de la edición vacía y la inclusión dinámica del parámetro en la consulta, esto no es una perversión, sino un fenómeno completamente normal, aunque es tedioso codificar.

Aquí por ejemplo:

sqlText: = "insertar en la tabla (";
Si edit1.text <> "" entonces
sqlText: = sqlText + "column1"
Si edit2.text <> "" entonces
sqlText: = sqlText + "column2"
eliminar (sqlText, longitud (sqlText), 1);
sqlText: = sqlText + ") valores (";
Si edit1.text <> "" entonces
sqlText: = sqlText + ": column1"
Si edit2.text <> "" entonces
sqlText: = sqlText + ": column2"
eliminar (sqlText, longitud (sqlText), 1);
sqlText: = sqlText + ")";

AdoQuery1.close;
AdoQuery1.SQL.clear;
AdoQuery1.SQL.Add (sqlText);
AdoQuery1.ExecSql;

También puedo sugerir entrar en Access en el constructor de la tabla en la que inserta y para todos los campos que pueden estar vacíos, configure el parámetro que permita la entrada de líneas vacías. Y luego la comprobación de campos vacíos debería desaparecer y no deberían arrojarse errores.



Ra   (2001-12-05 14:03) [7]

Solo necesita evitar tal solicitud. Una de dos maneras
1) antes de la ejecución, verifique ... si no se completan todos los campos, muestre un mensaje ...
2) o incluso deshabilitar el "control de vertido (probablemente un botón) hasta que se ingresen todos los datos necesarios ... para esto ... en todas las ediciones del evento OnChange cuelgue el siguiente controlador:


begin
Button1.Enable:=(Edit1.Text<>"") and (Edit2.Text<>"") and ...
end;





NDeu   (2001-12-05 14:19) [8]

> Ra © (05.12.01 14: 03)
Más bien:
comenzar
Button1.Enable: = (Remitente como TEdit) .Texto <> ""
fin;
:)





Котелок   (2001-12-06 01:00) [9]

> Ra
A veces, tales tareas existen cuando tal solicitud es simplemente necesaria.

Yo mismo enfrenté este problema, aunque usé una consulta estática ordinaria con campos 25 y la tabla tenía permiso para ingresar líneas vacías.



Páginas: 1 rama entera

Foro: "Bases";
Archivo actual: 2002.01.08;
Descargar: [xml.tar.bz2];

arriba





Memoria: 0.58 MB
Tiempo: 0.025 c
1-22112
regla verde
2001-12-15 13:55
2002.01.08
Botón de componente de solicitud


1-22252
tovSuhov
2001-12-17 14:22
2002.01.08
C treeView zaminochka ...


1-22173
Petyun
2001-12-20 19:33
2002.01.08
Instalación de componentes


1-22122
Mikhalyov Dmitry
2001-12-19 19:38
2002.01.08
Nuevamente sobre eventos


1-22030
Andrey senchenko
2001-12-18 12:49
2002.01.08
Form.OnCloseQuery - ¿Cómo manejar?





africaans albanés Arabic armenio Azerbaiyán vasco Bielorruso Bulgarian Catalán Chino (simplificado) Chino (tradicional) Croata Checo Danés Dutch Inglés Estonia filipina Finnish French
gallego georgiano Alemán Griego criollo haitiano Hebreo hindi Húngaro islandés Indonesian irlandés Italiano Japonés Korean letón lituano macedonio Malay maltés Noruego
persa polaco Portuguese Rumano Ruso Serbio Slovak Esloveno Español swahili Sueco Thai turco ucranio Urdu vietnamita galés yídish bengalí bosnio
cebuano esperanto gujarati hausa hmong igbo javanés kannada khmer lao latín maorí marathi mongol nepali punjabi somalí Tamil telugu yoruba
zulú
Английский Francés Alemán Italiano portugués Русский Español