SELECT MUITO GRANDE

ALANTB 01/12/2010 17:30:53
#358584
E ai galera. Estou tentando fazer uma rotina para imprimir uma ficha de funcionario. O problema é que as informações vem de mais de uma tabela: tbfuncionario, tbcontrato, tbcargo, tbfuncao, tbvinculo,...Tudo isso relacionado, da maneira que estou tentando fazer, me dá uma query de mais ou menos 24 linhas. Acho que isso está bloqueando a seleção de alguma forma (erro: Metodo open do recordset FAIL). Então eu pergunto: existe limite de linhas na query de seleção????Como posso fazer uma seleção em mais de uma tabela, sendo que a ficha vai imprimir pelo menos 32 campos de dados????
F001E 01/12/2010 17:34:13
#358585
faz um Select com INNER JOIN nas Tabelas colocando somente os Campos que voce quer que apareça no Relatorio....
XXXANGELSXXX 01/12/2010 17:38:09
#358586
Esse erro nao tem haver coom o tamanho da query nao, ele é função errada. no mysql acontece quando tem campos de data, e a string esta errada.. para relacionar duas tabelas voce pode utilizar o metodo where. assim

   
[Ô]select a.campo1,a.campo2,a.campo3,b.campo1,b.campo2,c.campo1,c.campo2 from tabela1 a, tabela2 b, tabela3 c where a.campo1=b.campo1 and a.campo1=c.campo1



ALANTB 01/12/2010 17:52:01
#358587
Pessoal, para facilitar segue o inicio do que comecei a fazer:

Dim rs As New ADODB.Recordset
Dim ComandoSQL As String
Dim Linha As Integer
[ô]If rs.State = 1 Then rs.Close
Linha = 1

If txtmatricula.Text = [Ô][Ô] Then Exit Sub

ComandoSQL = [Ô]SELECT tbcontrato.ContratoNro, tbcontrato.Matricula[Ô] & _
[Ô]tbcontrato.CodCargo, tbcontrato.CodFuncao, tbcontrato.CodSetor[Ô] & _
[Ô]tbcontrato.DtAdmissao, tbcontrato.DtDesligado[Ô] & _
[Ô]tbcontrato.Funcionario, tbcontrato.CodTipoContrato[Ô] & _
[Ô]tbcontrato.DtConcurso, tbcontrato.CodAto, tbcontrato.NroAto[Ô] & _
[Ô]tbcontrato.DtAto, tbfuncionario.Matricula, tbfuncionario.Nome AS Nome[Ô] & _
[Ô]tbfuncionario.DataNasc, tbfuncionario.Sexo[Ô] & _
[Ô]tbfuncionario.CodNatural, tbfuncionario.CodNacionalidade[Ô] & _
[Ô]tbfuncionario.CodEstadoCivil, tbfuncionario.CodGrauInstrucao[Ô] & _
[Ô]tbfuncionario.CodResidencia, tbfuncionario.Numero[Ô] & _
[Ô]tbfuncionario.NomePai, tbfuncionario.NomeMae[Ô] & _
[Ô]tbfuncionario.TituloNro, tbfuncionario.NroZonaTitulo[Ô] & _
[Ô]tbfuncionario.NroSecaoTitulo, tbfuncionario.NroRg[Ô] & _
[Ô]tbfuncionario.NroCPF, tbfuncionario.NroPasep[Ô] & _
[Ô]tbfuncionario.SitMilitar, tbfuncionario.NroCTPS[Ô] & _
[Ô]tbfuncionario.NroSerieCTPS, tbnatural.CodNatural[Ô] & _
[Ô]tbnatural.Descricao AS Natural, tbnacionalidade.CodNacionalidade[Ô] & _
[Ô]tbnacionalidade.Descricao AS Nacionalidade[Ô] & _
[Ô]tbestadocivil.CodEstadoCivil,tbestadocivil.Descricao AS EstadoCivil,tbgrauinstrucao.CodGrauInstrucao, tbgrauinstrucao.Descricao AS GrauInstrucao[Ô] & _
[Ô]tbresidencia.CodResidencia, tbresidencia.DescricaoResidencia AS Residencia[Ô] & _
[Ô]tbcargo.CodCargo, tbcargo.Descricao AS Cargo[Ô] & _
[Ô]tbfuncao.CodFuncao, tbfuncao.Descricao AS Funcao,tbsetor.CodSetor, tbsetor.Descricao AS Setor,tbtipocontrato.CodTipoContrato, tbtipocontrato.Descricao AS Contratado, tbato.CodAto, tbato.Descricao AS Ato[Ô] & _
[Ô]FROM tbtipocontrato INNER JOIN (tbsetor INNER JOIN (tbresidencia INNER JOIN (tbnatural INNER JOIN (tbnacionalidade INNER JOIN (tbgrauinstrucao INNER JOIN ((tbestadocivil INNER JOIN tbfuncionario ON tbestadocivil.CodEstadoCivil = tbfuncionario.CodEstadoCivil) INNER JOIN (tbfuncao INNER JOIN (tbcargo INNER JOIN (tbato INNER JOIN tbcontrato ON tbato.CodAto = tbcontrato.CodAto) ON tbcargo.CodCargo = tbcontrato.CodCargo) ON tbfuncao.CodFuncao = tbcontrato.CodFuncao) ON tbfuncionario.Matricula = tbcontrato.Matricula) ON tbgrauinstrucao.CodGrauInstrucao = tbfuncionario.CodGrauInstrucao) ON tbnacionalidade.CodNacionalidade = tbfuncionario.CodNacionalidade) ON tbnatural.CodNatural = tbfuncionario.CodNatural) ON tbresidencia.CodResidencia = tbfuncionario.CodResidencia) ON tbsetor.CodSetor = tbcontrato.CodSetor) ON tbtipocontrato.CodTipoContrato = tbcontrato.CodTipoContrato[Ô] & _
[Ô]WHERE tbcontrato.Matricula=[Ô] & txtmatricula.Text



rs.Open ComandoSQL, conn, adOpenStatic
If rs.EOF And rs.BOF Then

[ô] Do While Not rs.EOF
If Linha = 1 Then
[ô]Cabecalho
[ô]End If
Linha = Linha + 1
End If
Printer.Print Tab(5); rs!Nome;
Printer.Print Tab(45); rs!Cargo;
[ô]Printer.Print Tab(45); rs!endereco;
[ô]Printer.Print Tab(65); rs!datanasc;
[ô]Printer.Print Tab(93); rs!rg;
[ô]Printer.Print
If Linha = 50 Then
Printer.NewPage
Linha = 1
End If
rs.MoveNext
[ô]Loop

Printer.EndDoc

End If

End Sub
LLAIA 01/12/2010 21:16:09
#358599
primeiro passo: essa query funciona no gerenciador do BD ?
LUIZCOMINO 01/12/2010 21:46:43
#358603

amigo você não está colocando vírgula no final da quebra de linha e nem espaço antes do from.

segue


ComandoSQL = [Ô]SELECT tbcontrato.ContratoNro, tbcontrato.Matricula[Ô] & _
[Ô],tbcontrato.CodCargo, tbcontrato.CodFuncao, tbcontrato.CodSeto,[Ô] & _
[Ô],tbcontrato.DtAdmissao, tbcontrato.DtDesligado[Ô] & _
[Ô],tbcontrato.Funcionario, tbcontrato.CodTipoContrato[Ô] & _
[Ô],tbcontrato.DtConcurso, tbcontrato.CodAto, tbcontrato.NroAto[Ô] & _
[Ô],tbcontrato.DtAto, tbfuncionario.Matricula, tbfuncionario.Nome AS Nome[Ô] & _
[Ô],tbfuncionario.DataNasc, tbfuncionario.Sexo[Ô] & _
[Ô],tbfuncionario.CodNatural, tbfuncionario.CodNacionalidade[Ô] & _
[Ô],tbfuncionario.CodEstadoCivil, tbfuncionario.CodGrauInstrucao[Ô] & _
[Ô],tbfuncionario.CodResidencia, tbfuncionario.Numero[Ô] & _
[Ô],tbfuncionario.NomePai, tbfuncionario.NomeMae[Ô] & _
[Ô],tbfuncionario.TituloNro, tbfuncionario.NroZonaTitulo[Ô] & _
[Ô],tbfuncionario.NroSecaoTitulo, tbfuncionario.NroRg[Ô] & _
[Ô],tbfuncionario.NroCPF, tbfuncionario.NroPasep[Ô] & _
[Ô],tbfuncionario.SitMilitar, tbfuncionario.NroCTPS[Ô] & _
[Ô],tbfuncionario.NroSerieCTPS, tbnatural.CodNatural[Ô] & _
[Ô],tbnatural.Descricao AS Natural, tbnacionalidade.CodNacionalidade[Ô] & _
[Ô],tbnacionalidade.Descricao AS Nacionalidade[Ô] & _
[Ô]tbestadocivil.CodEstadoCivil,tbestadocivil.Descricao AS EstadoCivil,tbgrauinstrucao.CodGrauInstrucao, tbgrauinstrucao.Descricao AS GrauInstrucao[Ô] & _
[Ô],tbresidencia.CodResidencia, tbresidencia.DescricaoResidencia AS Residencia[Ô] & _
[Ô],tbcargo.CodCargo, tbcargo.Descricao AS Cargo[Ô] & _
[Ô],tbfuncao.CodFuncao, tbfuncao.Descricao AS Funcao,tbsetor.CodSetor, tbsetor.Descricao AS Setor,tbtipocontrato.CodTipoContrato, tbtipocontrato.Descricao AS Contratado, tbato.CodAto, tbato.Descricao AS Ato[Ô] & _
[Ô] FROM tbtipocontrato INNER JOIN (tbsetor INNER JOIN (tbresidencia INNER JOIN (tbnatural INNER JOIN (tbnacionalidade INNER JOIN (tbgrauinstrucao INNER JOIN ((tbestadocivil INNER JOIN tbfuncionario ON tbestadocivil.CodEstadoCivil = tbfuncionario.CodEstadoCivil) INNER JOIN (tbfuncao INNER JOIN (tbcargo INNER JOIN (tbato INNER JOIN tbcontrato ON tbato.CodAto = tbcontrato.CodAto) ON tbcargo.CodCargo = tbcontrato.CodCargo) ON tbfuncao.CodFuncao = tbcontrato.CodFuncao) ON tbfuncionario.Matricula = tbcontrato.Matricula) ON tbgrauinstrucao.CodGrauInstrucao = tbfuncionario.CodGrauInstrucao) ON tbnacionalidade.CodNacionalidade = tbfuncionario.CodNacionalidade) ON tbnatural.CodNatural = tbfuncionario.CodNatural) ON tbresidencia.CodResidencia = tbfuncionario.CodResidencia) ON tbsetor.CodSetor = tbcontrato.CodSetor) ON tbtipocontrato.CodTipoContrato = tbcontrato.CodTipoContrato[Ô] & _
[Ô] WHERE tbcontrato.Matricula=[Ô] & txtmatricula.Text
RODRIGOFERRO 02/12/2010 10:55:00
#358619
é facil resolver isso, pega o SQL gerado pela sua string e vai colando Direto no banco dai ele vai mostrando os erros.


Abraços
ALANTB 02/12/2010 11:08:40
#358621
ZEROCAL, a query acima eu fiz construindo uma CONSULTA no ACCESS, depois de inserir todos os campos eu visualizei em MODO SQL e copie a query resultante para o VB. Só que dai estou tendo problemas de sintaxe. Gostaria tambem que os amigos que visualizarem esse topico tambem deêm uma olhada no código abaixo da query, o codigo que manda para impressora. Eu nunca tnha usado printer antes. Pra saber se a query funciona essa parte do código tambem deve estar certa para poder ver se a impressora responde ao comando. Vou tentando por aqui.....
FOXMAN 02/12/2010 20:27:11
#358672
Resposta escolhida
  ComandoSQL = [Ô]SELECT tbcontrato.ContratoNro, tbcontrato.Matricula[Ô] & _
[Ô]tbcontrato.CodCargo, tbcontrato.CodFuncao, tbcontrato.CodSetor[Ô] & _
[Ô]tbcontrato.DtAdmissao, tbcontrato.DtDesligado[Ô] & _
[Ô]tbcontrato.Funcionario, tbcontrato.CodTipoContrato[Ô] & _
[Ô]tbcontrato.DtConcurso, tbcontrato.CodAto, tbcontrato.NroAto[Ô] & _
[Ô]tbcontrato.DtAto, tbfuncionario.Matricula, tbfuncionario.Nome AS Nome[Ô] & _
[Ô]tbfuncionario.DataNasc, tbfuncionario.Sexo[Ô] & _
[Ô]tbfuncionario.CodNatural, tbfuncionario.CodNacionalidade[Ô] & _
[Ô]tbfuncionario.CodEstadoCivil, tbfuncionario.CodGrauInstrucao[Ô] & _
[Ô]tbfuncionario.CodResidencia, tbfuncionario.Numero[Ô] & _
[Ô]tbfuncionario.NomePai, tbfuncionario.NomeMae[Ô] & _
[Ô]tbfuncionario.TituloNro, tbfuncionario.NroZonaTitulo[Ô] & _
[Ô]tbfuncionario.NroSecaoTitulo, tbfuncionario.NroRg[Ô] & _
[Ô]tbfuncionario.NroCPF, tbfuncionario.NroPasep[Ô] & _
[Ô]tbfuncionario.SitMilitar, tbfuncionario.NroCTPS[Ô] & _
[Ô]tbfuncionario.NroSerieCTPS, tbnatural.CodNatural[Ô] & _
[Ô]tbnatural.Descricao AS Natural, tbnacionalidade.CodNacionalidade[Ô] & _
[Ô]tbnacionalidade.Descricao AS Nacionalidade[Ô] & _
[Ô]tbestadocivil.CodEstadoCivil,tbestadocivil.Descricao AS EstadoCivil,tbgrauinstrucao.CodGrauInstrucao, tbgrauinstrucao.Descricao AS GrauInstrucao[Ô] & _
[Ô]tbresidencia.CodResidencia, tbresidencia.DescricaoResidencia AS Residencia[Ô] & _
[Ô]tbcargo.CodCargo, tbcargo.Descricao AS Cargo[Ô] & _
[Ô]tbfuncao.CodFuncao, tbfuncao.Descricao AS Funcao,tbsetor.CodSetor, tbsetor.Descricao AS Setor,tbtipocontrato.CodTipoContrato, tbtipocontrato.Descricao AS Contratado, tbato.CodAto, tbato.Descricao AS Ato[Ô] & _
[Ô] FROM tbtipocontrato INNER JOIN (tbsetor INNER JOIN (tbresidencia INNER JOIN (tbnatural INNER JOIN (tbnacionalidade INNER JOIN (tbgrauinstrucao INNER JOIN ((tbestadocivil INNER JOIN tbfuncionario ON tbestadocivil.CodEstadoCivil = tbfuncionario.CodEstadoCivil) INNER JOIN (tbfuncao INNER JOIN (tbcargo INNER JOIN (tbato INNER JOIN tbcontrato ON tbato.CodAto = tbcontrato.CodAto) ON tbcargo.CodCargo = tbcontrato.CodCargo) ON tbfuncao.CodFuncao = tbcontrato.CodFuncao) ON tbfuncionario.Matricula = tbcontrato.Matricula) ON tbgrauinstrucao.CodGrauInstrucao = tbfuncionario.CodGrauInstrucao) ON tbnacionalidade.CodNacionalidade = tbfuncionario.CodNacionalidade) ON tbnatural.CodNatural = tbfuncionario.CodNatural) ON tbresidencia.CodResidencia = tbfuncionario.CodResidencia) ON tbsetor.CodSetor = tbcontrato.CodSetor) ON tbtipocontrato.CodTipoContrato = tbcontrato.CodTipoContrato[Ô] & _
[Ô] WHERE tbcontrato.Matricula=[Ô] & txtmatricula.Text


Veja se não funfa ae !!!
ALANTB 03/12/2010 08:34:51
#358689
FOXMAN, funcionou a query. Agora tô apanhando para mandar para impressora.Vou pesquisar sobre objeto printer.Por enquanto estou encerrando o tópico.Valeu!!!!!!!!!!
Tópico encerrado , respostas não são mais permitidas