Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

pode haver valores de parâmetro de consulta vazios no SQL Encontre agências semelhantes


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

Bom dia Existe uma base de dados (access2000). Existe uma interface de usuário (.Exe). A comunicação entre a interface e o banco de dados ocorre por meio de consultas ADO e SQL. Existe um conjunto de formulários para preencher várias tabelas de banco de dados. Ao mesmo tempo, alguns Edit "s no formulário podem ser deixados em branco, ou seja, não contêm nenhum valor. E agora a pergunta é: é possível enviar via SQL uma solicitação para adicionar (atualizar) a tabela se ALGUNS CAMPOS dos dados da solicitação estiverem EMPTY (field =" ") Isto é principalmente sobre campos de texto.
Naturalmente, há uma opção para verificar o valor do campo para "vazio" e formar uma consulta dinamicamente, mas se houver partes 20 de tais campos, então esta é uma construção bastante complicada.



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

É possível.

Por exemplo:

inserir na tabela (valores column1, column2) (: col1 ,: col2)

E então você simplesmente atribui aos parâmetros os valores dessas edições que deveriam ser.
E se a edição estiver vazia, um campo vazio também será inserido.



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

add-on ... bem, bom. e se o mesmo componente AdoQuery for usado para consultas diferentes, o número de parâmetros poderá ser diferente. e se você escrever algo como AdoQuery1.SQL.Add ("inserir em valores de tabela (col1, col2)" + Edit1.Text + "," + Edit2.text + ")"); então com valores vazios em Edit1 ou Edit2, um erro aparece sobre um tipo de variável inválido, ou que o campo não tem um parâmetro padrão;
e eu realmente não quero arrastar um monte de parâmetros de consulta estática



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

Mas o que impede você de passar valores "vazios" se tiver campos, claro que não não é Nulo?



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

Se você tiver linhas nas edições, tente assim ...

AdoQuery1.SQL.Add ("inserir na tabela (col1, col2) valores" + "" "" + Edit1.Text + "" "" + "," + "" "" + Edit2.text + "" "" + ") ");
Com uma indicação explícita de que isso é uma string.
Embora através de parambyname ainda é mais confiável.



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

e mais uma adição.
talvez eu mal explicou onde o cão vasculhou%)
existe uma consulta AdoQuery1.SQL.Add ("inserir na tabela (col1, col2) valores (" + "" "" + Edit1.Text + "" "" + "," + "" "" + Edit2.text + "" "" + ")");
tudo está claro aqui. mas se no formulário ao inserir dados Edit1 (por exemplo) foi deixado vazio, então ao executar este pedido o Egor rastreia. e assim, eu gostaria de me livrar deles (de erros) com custos mínimos.
escrever algo como ... valores (: col1 ,: col2) é certamente bom, mas quando existem poucos campos, e se há cerca de pedaços 20, então crie todos esses parâmetros no inspetor de objetos e então, sem ficar confuso em sua grande massa , atribuir-lhes valores de edições - este já é um número com truques.
você pode ficar cheques tipo
se Edit1.Text <> "", em seguida, enable_field_to_query
Mas isso é perversão completa!



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

Não está claro por que criar objetos no inspetor?

Quanto à verificação de edição vazia e inclusão dinâmica do parâmetro na consulta, isso não é uma perversão, mas um fenômeno completamente normal, embora seja tedioso codificar.

Aqui por exemplo:

sqlText: = "inserir na tabela (";
se edit1.text <> "" então
sqlText: = sqlText + "column1"
se edit2.text <> "" então
sqlText: = sqlText + "column2"
delete (sqlText, comprimento (sqlText), 1);
sqlText: = sqlText + ") valores (";
se edit1.text <> "" então
sqlText: = sqlText + ": column1,"
se edit2.text <> "" então
sqlText: = sqlText + ": column2,"
delete (sqlText, comprimento (sqlText), 1);
sqlText: = sqlText + ")";

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

Também posso sugerir acessar o Access no construtor da tabela na qual você insere e para todos os campos que podem estar vazios, configure o parâmetro para permitir a entrada de linhas vazias. E então a verificação de campos vazios deve desaparecer e os erros não devem ser lançados.



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

Você só precisa impedir essa solicitação. Uma das duas maneiras
1) antes da execução, verifique .. se nem todos os campos estão preenchidos - exibir uma mensagem ...
2) ou até mesmo disab "pour controle (mais provavelmente um botão) até que todos os dados necessários sejam inseridos .. para isso .. em todas as edições para o evento OnChange travar o seguinte manipulador:

começar Button1.Enable: = (Edit1.Text <> "") e (Edit2.Text <> "") e ... fim;




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

> Ra © (05.12.01 14: 03)
Em vez disso:
começar
Button1.Enable: = (remetente como TEdit) .Text <> ""
end;
:)





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

> Ra
Às vezes, tais tarefas existem quando tal solicitação é simplesmente necessária.

Eu mesmo enfrentei esse problema, embora eu tenha usado uma consulta estática comum com campos 25 e a tabela tivesse permissão para inserir linhas vazias.



Страницы: 1 filial inteira

Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.59 MB
Hora: 0.036 c
1-22148
Delphimun
2001-12-20 12:10
2002.01.08
Como enviar uma mensagem para o sistema que uma tecla é pressionada?


1-22061
Movimentação da roda
2001-12-18 19:44
2002.01.08
Por que o formulário MDI não exibe MDIChild no menu ???


7-22425
Andrey
2001-06-19 15:45
2002.01.08
Função para scanner


7-22430
AlexK
2001-09-21 12:28
2002.01.08
fechadura com chave


14-22409
Vadim
2001-11-12 13:56
2002.01.08
Ou talvez não bateremos as mãos um do outro?





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese romeno Russa sérvio Slovak esloveno espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol