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

Para baixo

pedidos Encontre agências semelhantes


Koba   (2004-04-15 21:21) [0]

Diga-me como descobrir o resultado da solicitação (atribua-o a uma variável):
selecione contagem (*) de XXX



Koba   (2004-04-15 21:21) [0]

Diga-me como descobrir o resultado da solicitação (atribua-o a uma variável):
selecione contagem (*) de XXX



kaif ©   (2004-04-15 21:26) [1]

Depende de como a solicitação é feita. Se você estiver usando componentes do tipo TQuery, precisará abrir a solicitação (método Open) e, em seguida, ler o valor do campo pelo método
Query1.Fields [0] .AsInteger.
E você pode criar um alias para o campo na solicitação:
selecione contagem (*) ccc de XXX
E entre em contato pelo nome:
Query1.FieldByName ("ccc"). AsInteger



kaif ©   (2004-04-15 21:26) [1]

Depende de como a solicitação é feita. Se você estiver usando componentes do tipo TQuery, precisará abrir a solicitação (método Open) e, em seguida, ler o valor do campo pelo método
Query1.Fields [0] .AsInteger.
E você pode criar um alias para o campo na solicitação:
selecione contagem (*) ccc de XXX
E entre em contato pelo nome:
Query1.FieldByName ("ccc"). AsInteger



tERRORist ©   (2004-04-15 21:26) [2]

declare @len int
set @ len = (selecione a contagem (*) de xxx)

Mas estou interessado em como encontrar o comprimento máximo de um valor (se o valor for apresentado como uma sequência) em um campo quando o nome do próprio campo e da tabela não forem conhecidos antecipadamente.



tERRORist ©   (2004-04-15 21:26) [2]

declare @len int
set @ len = (selecione a contagem (*) de xxx)

Mas estou interessado em como encontrar o comprimento máximo de um valor (se o valor for apresentado como uma sequência) em um campo quando o nome do próprio campo e da tabela não forem conhecidos antecipadamente.



kaif ©   (2004-04-15 21:29) [3]

2 tERRORist © (15.04.04 21: 26) [2]
Esse código é para MSSQL?
Então, IMHO, a resposta para sua pergunta será solicitar esses dados das tabelas do sistema MSSQL. Onde os metadados da tabela são descritos?



kaif ©   (2004-04-15 21:29) [3]

2 tERRORist © (15.04.04 21: 26) [2]
Esse código é para MSSQL?
Então, IMHO, a resposta para sua pergunta será solicitar esses dados das tabelas do sistema MSSQL. Onde os metadados da tabela são descritos?



tERRORist ©   (2004-04-15 21:33) [4]

Não me entendi direito direito. O comprimento máximo permitido (ou seja, que você especifica ao projetar a tabela pode ser facilmente retirado dos metadados), e preciso descobrir qual é o comprimento máximo real do campo (o comprimento do valor mais longo :).
Além disso, o cant é que o nome da coluna e da tabela não é conhecido antecipadamente, mas é obtido a partir de parâmetros de texto ...



tERRORist ©   (2004-04-15 21:33) [4]

Não me entendi direito direito. O comprimento máximo permitido (ou seja, que você especifica ao projetar a tabela pode ser facilmente retirado dos metadados), e preciso descobrir qual é o comprimento máximo real do campo (o comprimento do valor mais longo :).
Além disso, o cant é que o nome da coluna e da tabela não é conhecido antecipadamente, mas é obtido a partir de parâmetros de texto ...



kaif ©   (2004-04-15 21:39) [5]

E qual é o conjunto máximo que não é igual ao máximo real?
Por exemplo, sempre me pareceu que VARCHAR (50) é um campo no qual é possível empilhar uma sequência com um comprimento máximo de caracteres 50. Ou não é assim no MSSQL?



kaif ©   (2004-04-15 21:39) [5]

E qual é o conjunto máximo que não é igual ao máximo real?
Por exemplo, sempre me pareceu que VARCHAR (50) é um campo no qual é possível empilhar uma sequência com um comprimento máximo de caracteres 50. Ou não é assim no MSSQL?



tERRORist ©   (2004-04-15 21:41) [6]

Se você conhece os nomes da coluna e da tabela com antecedência, é fácil encontrar:
set @ len = (selecione max (len (cast (COLUMN1 como varchar (8000)))) de TABLE1)
Mas o fato é que COLUMN1, TABLE1 deve ser substituído dinamicamente.
Tentei criar uma função na qual executo consultas dinâmicas exec ("<comando>") e gravar o resultado em uma placa temporária, mas ao atribuir a variável @ len = (selecione o comprimento da coluna de #temporary_table) o servidor jura que ele diz que não é possível acessar funções temporárias das funções tables :(



tERRORist ©   (2004-04-15 21:41) [6]

Se você conhece os nomes da coluna e da tabela com antecedência, é fácil encontrar:
set @ len = (selecione max (len (cast (COLUMN1 como varchar (8000)))) de TABLE1)
Mas o fato é que COLUMN1, TABLE1 deve ser substituído dinamicamente.
Tentei criar uma função na qual executo consultas dinâmicas exec ("<comando>") e gravar o resultado em uma placa temporária, mas ao atribuir a variável @ len = (selecione o comprimento da coluna de #temporary_table) o servidor jura que ele diz que não é possível acessar funções temporárias das funções tables :(



kaif ©   (2004-04-15 21:42) [7]

Talvez você precise
selecione max (length (<field>)) em <table>
?
Então você precisa desenterrar a função length no MSSQL. Existem muitas funções. Obviamente, isso também existe. E não um.



kaif ©   (2004-04-15 21:42) [7]

Talvez você precise
selecione max (length (<field>)) em <table>
?
Então você precisa desenterrar a função length no MSSQL. Existem muitas funções. Obviamente, isso também existe. E não um.



kaif ©   (2004-04-15 21:47) [8]

Eu finalmente entendi. E no final, o que você precisa obter do lado do cliente? Um valor para este campo desta tabela? Ou uma matriz de tais valores?



kaif ©   (2004-04-15 21:47) [8]

Eu finalmente entendi. E no final, o que você precisa obter do lado do cliente? Um valor para este campo desta tabela? Ou uma matriz de tais valores?



kaif ©   (2004-04-15 21:48) [9]

Nos procedimentos armazenados, você pode acessar tabelas temporárias. Escreva um procedimento armazenado.



kaif ©   (2004-04-15 21:48) [9]

Nos procedimentos armazenados, você pode acessar tabelas temporárias. Escreva um procedimento armazenado.



tERRORist ©   (2004-04-15 21:51) [10]

Precisa de algo assim:
set @ command = "se não existir (selecione * em tempdb..sysobjects em que name =" ## temp_table ")" "criar tabela ## temp_table (comprimento_da_coluna int);" exec (@command) set @ command = "insira em ## temp_table (comprimento da coluna)" "selecione max (len (cast (" + @ coluna + "como varchar (8000)))))," de "+ @ table +"; " exec (@command) set @ len = (selecione o comprimento da coluna em ## temp_table)

onde @table e @column são nomes substituídos dinamicamente



tERRORist ©   (2004-04-15 21:51) [10]

Precisa de algo assim:
set @ command = "se não existir (selecione * em tempdb..sysobjects em que name =" ## temp_table ")" "criar tabela ## temp_table (comprimento_da_coluna int);" exec (@command) set @ command = "insira em ## temp_table (comprimento da coluna)" "selecione max (len (cast (" + @ coluna + "como varchar (8000)))))," de "+ @ table +"; " exec (@command) set @ len = (selecione o comprimento da coluna em ## temp_table)

onde @table e @column são nomes substituídos dinamicamente



kaif ©   (2004-04-15 21:56) [11]

Declare o cursor e faça essa atribuição nele.



kaif ©   (2004-04-15 21:56) [11]

Declare o cursor e faça essa atribuição nele.



tERRORist ©   (2004-04-15 21:56) [12]

Bem, você provavelmente precisa realmente enfiar tudo no procedimento,
Eu só queria descarregá-lo, transformar a definição de comprimento em uma função.
E tudo isso é necessário para o relatório universal. Em geral, o nome da tabela e a lista de colunas agrupadas são transferidas para o procedimento, fornecendo o resultado de uma maneira bonita e assim por diante para qualquer tabela.



tERRORist ©   (2004-04-15 21:56) [12]

Bem, você provavelmente precisa realmente enfiar tudo no procedimento,
Eu só queria descarregá-lo, transformar a definição de comprimento em uma função.
E tudo isso é necessário para o relatório universal. Em geral, o nome da tabela e a lista de colunas agrupadas são transferidas para o procedimento, fornecendo o resultado de uma maneira bonita e assim por diante para qualquer tabela.



kaif ©   (2004-04-15 22:02) [13]

Sim, eu entendo o que você quer fazer. Mas eu não entendo o que. Por que você pode usar uma consulta SELECT dentro de uma função, mas não pode "roubar" o resultado dela? Você já tentou declarar um cursor? O cursor dinâmico do SQL funciona? Ele só precisa "clicar" uma vez - para atribuir o resultado à variável que a função retornará.



kaif ©   (2004-04-15 22:02) [13]

Sim, eu entendo o que você quer fazer. Mas eu não entendo o que. Por que você pode usar uma consulta SELECT dentro de uma função, mas não pode "roubar" o resultado dela? Você já tentou declarar um cursor? O cursor dinâmico do SQL funciona? Ele só precisa "clicar" uma vez - para atribuir o resultado à variável que a função retornará.



tERRORist ©   (2004-04-15 22:08) [14]

Eu não entendi uma coisa ...
Posso selecionar, mas você não sabe de antemão o que -
nomes de colunas e tabelas são variáveis. Mas você não conseguirá extrair dados do exec (@comand), porque o servidor abre uma conexão separada e, em seguida, executa o código que entra no parâmetro @comand



tERRORist ©   (2004-04-15 22:08) [14]

Eu não entendi uma coisa ...
Posso selecionar, mas você não sabe de antemão o que -
nomes de colunas e tabelas são variáveis. Mas você não conseguirá extrair dados do exec (@comand), porque o servidor abre uma conexão separada e, em seguida, executa o código que entra no parâmetro @comand



Hro   (2004-04-15 22:20) [15]

>> tERRORist
Pare, apenas sem cursores, por favor, eles trabalham lentamente.
Kaif me pediu ajuda.
por favor indique sua tarefa novamente



Hro   (2004-04-15 22:20) [15]

>> tERRORist
Pare, apenas sem cursores, por favor, eles trabalham lentamente.
Kaif me pediu ajuda.
por favor indique sua tarefa novamente



Hro   (2004-04-15 22:23) [16]

>> tERRORist
para um campo
selecione maxlen = max (L) de (selecione L = len (campo1) da tabela1) como tt



Hro   (2004-04-15 22:23) [16]

>> tERRORist
para um campo
selecione maxlen = max (L) de (selecione L = len (campo1) da tabela1) como tt



tERRORist ©   (2004-04-15 22:34) [17]

> Pare, apenas sem cursores, eles trabalham devagar.
Os cursores funcionam bem, estou construindo tudo sobre eles para obter agrupamentos.

> Kaif me pediu para ajudar.
> indique sua tarefa novamente

Tarefa impressionante, você precisa fazer um relatório universal para que o nome da tabela e uma lista de colunas agrupadas sejam transferidas para o procedimento e forneça o resultado em um belo formulário agrupado. Em geral, eu já fiz tudo de forma realista, tudo é exibido no cliente no DBGridEh, pintado por níveis de agrupamento, mesmo recolhidos, implantados no ZellClick, somatório - ou seja, como Tabela Dinâmica no Excel. Resta corrigir um pouco isso. Se você deseja agrupar várias colunas no mesmo nível, formarei uma linha (que é inserida no resultado como o cabeçalho do nível) "Nome da coluna1: valores agrupados1" + "Nome da coluna2: valor agrupado2". Mas os valores de <Valor agrupado> podem ter comprimentos diferentes, ou seja, em outro título do mesmo nível, eles não estarão estritamente um com o outro, então eu queria encontrar o tamanho máximo e formatá-lo. Em geral, isso provavelmente é difícil de entender, se você ver a imagem imediatamente, fica clara ... É uma pena que as imagens não possam ser inseridas



tERRORist ©   (2004-04-15 22:34) [17]

> Pare, apenas sem cursores, eles trabalham devagar.
Os cursores funcionam bem, estou construindo tudo sobre eles para obter agrupamentos.

> Kaif me pediu para ajudar.
> indique sua tarefa novamente

Tarefa impressionante, você precisa fazer um relatório universal para que o nome da tabela e uma lista de colunas agrupadas sejam transferidas para o procedimento e forneça o resultado em um belo formulário agrupado. Em geral, eu já fiz tudo de forma realista, tudo é exibido no cliente no DBGridEh, pintado por níveis de agrupamento, mesmo recolhidos, implantados no ZellClick, somatório - ou seja, como Tabela Dinâmica no Excel. Resta corrigir um pouco isso. Se você deseja agrupar várias colunas no mesmo nível, formarei uma linha (que é inserida no resultado como o cabeçalho do nível) "Nome da coluna1: valores agrupados1" + "Nome da coluna2: valor agrupado2". Mas os valores de <Valor agrupado> podem ter comprimentos diferentes, ou seja, em outro título do mesmo nível, eles não estarão estritamente um com o outro, então eu queria encontrar o tamanho máximo e formatá-lo. Em geral, isso provavelmente é difícil de entender, se você ver a imagem imediatamente, fica clara ... É uma pena que as imagens não possam ser inseridas



kaif ©   (2004-04-16 01:55) [18]

Pode entrar na selva do DBGridEh, pelo que entendi, todas as informações já estão no cliente?



kaif ©   (2004-04-16 01:55) [18]

Pode entrar na selva do DBGridEh, pelo que entendi, todas as informações já estão no cliente?



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

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

em cima









Memória: 0.71 MB
Hora: 0.112 c
9-1070889697
zzet
2003-12-08 16:21
2004.05.09
Linha e cor OpenGl


3-1081846406
DBDEV
2004-04-13 12:53
2004.05.09
Thread safe TADOQuery.Open, ajude com conselhos!


1-1082381323
Felix M.
2004-04-19 17:28
2004.05.09
Imprimir a partir do Word


7-1079610137
Delph1
2004-03-18 14:42
2004.05.09
Como obter o diretório da área de trabalho em Delphi?


11-1067182629
Revolter
2003-10-26 18:37
2004.05.09
como dar uma dica sobre o papel das mensagens de aviso?





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