SELECT MUITO GRANDE
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????
faz um Select com INNER JOIN nas Tabelas colocando somente os Campos que voce quer que apareça no Relatorio....
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
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
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
primeiro passo: essa query funciona no gerenciador do BD ?
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
é facil resolver isso, pega o SQL gerado pela sua string e vai colando Direto no banco dai ele vai mostrando os erros.
Abraços
Abraços
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.....
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 !!!
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