Problemas com Access e distinct (RESOLVIDO)

8 respostas
DAREK6920
Bom dia a todos. Gostaria que alguem me ajudasse a descobrir porque esta coisa não esta funcionando:
public static void lcides() throws ClassNotFoundException, SQLException{
        variaveis.con.close();
        variaveis.con = funcoes.conectar();
        //ResultSet rs1 = funcoes.rsf("select distinct municipio from clis ORDER BY MUNICIPIO");
        ResultSet rs1 = funcoes.rsf("select * from clis order by municipio");
        
        rs1.next();
        while (rs1.next()){
            cidades.addItem(rs1.getString("municipio"));
        }
        
    }
No codigo acima se mantenho a clausula distinct o raio do programa me da o seguinte erro :

Mar 14, 2013 10:24:39 AM nfeasy.pr jMenuItem5ActionPerformed
SEVERE: null
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Estado de cursor inv?lido
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6956)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(JdbcOdbc.java:3906)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(JdbcOdbcResultSet.java:5697)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:353)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(JdbcOdbcResultSet.java:410)
at nfeasy.parti.lcides(parti.java:540)
at nfeasy.parti.(parti.java:45)
at nfeasy.pr.jMenuItem5ActionPerformed(pr.java:491)
at nfeasy.pr.access$1300(pr.java:47)
at nfeasy.pr$13.actionPerformed(pr.java:300)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Só pra constar minha conexao esta assim :
public static Connection conectar(){
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String filename = "g:/BANCOS/nfeasy.mdb";
    String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
    database+= filename.trim() + ";DriverID=22;READONLY=false}"; // add on to the end 
    // now we can get the connection from the DriverManager
    Connection con = DriverManager.getConnection( database ,"",""); 
    return con;
    }
    catch (Exception e) {
    System.out.println("Error: " + e);
    return null;
    }
}

E o gerador de resultset assim :

public static ResultSet rsf(String seletor) throws ClassNotFoundException, SQLException {
       java.sql.Connection con;
       java.sql.Statement st;
       java.sql.ResultSet result = null;
       //f.m(variaveis.servidor + " " + Banco);
       try {
       //Class.forName("org.gjt.mm.mysql.Driver");
       
       //con = java.sql.DriverManager.getConnection("jdbc:mysql://" + variaveis.servidor + Banco + "?useUnicode=true",variaveis.login,variaveis.senha);
       //con = conectar();
       st=variaveis.con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
       
       result= st.executeQuery(seletor);
       return result;
       } catch (Exception Ex){
       //f.m(seletor);    
       f.m("Falha na execução de link com o servidor " + Ex); 
       return result;
       }
       
}

Agradeceria se alguem pudesse me dar uma luz sobre o assunto. Anteriormente estava usando Mysql mas decidi utilizar access porque me oferece mais facilidade para migrar os dados de maquina para maquina.

Grato

Dario

8 Respostas

denisspitfire

vo chorar. access de novo naaaooo

bom, vou te ajudar pq preciso fazer minha boa ação do dia kkkk

por favor nao use access…

cara, me passa a estrutura do banco, eu vi um clis ali acho que esta errado, nao seria só cli?

DAREK6920

Sinto muito mesmo pelo access, mas foi a opção mais viavel considerando a estrutura e o conhecimento de informatica de meus clientes.
Quanto ao clis, é clis mesmo. O nome da tabela é clis, anteriormente estava como clientes, mudei apenas para saber se acontecia alguma coisa.

DAREK6920

só para complementar, esta tabela foi importada do mysql onde funcionava direitinho. a complicação somente acontece no campo municipio. O interessante é que em outra area do sistema existe uma busca numa outra tabela cujo nome é municipios e tambem nesta tabela ocorre erro

denisspitfire

que estranho. Mas manda a estrutura para verificarmos melhor.

quais sao as colunas e o nome da tabela

DAREK6920

Estas são as colunas da tabela clis:

nome
nomefantasia
cnpj
cpf
ie
cadastromobiliario
municipio
cod_mun
cep
estado
licenca
codigoempresa
tipo
cod_pais
end
num
compl
bairro
suframa
dt_alt
nr_campo
cont_ant
cod_part
email
clientescol
documento
telefone
ROTA
doc

Não existem colunas de dados tipo data. O campo doc é o campo chave e seu preencimento e autonumeração.

Tenho uma outra tabela de nome municipios onde tambem esta dando problema, cuja estrutura é:

DOCUMENTO
codigoestado
codigomunicipio
xcidade
codmunicipio
municipio

sendo que o campo DOCUMENTO é autonumeração e chave

DAREK6920

Outra informação que pode ser necessaria, estou usando netbeans 7.3

DAREK6920
Outra informação curiosa é que usando esta alteração ele me mostra realmente as duas primeira cidades da lista:
public static void lcides() throws ClassNotFoundException, SQLException{
        variaveis.con.close();
        variaveis.con = funcoes.conectar();
        ResultSet rs1 = funcoes.rsf("select distinct cidade from clis ORDER BY cidade");
        //ResultSet rs1 = funcoes.rsf("select * from clis order by municipio");
        
        rs1.next();
        funcoes.m(rs1.getString("cidade"));
        rs1.next();
        funcoes.m(rs1.getString("cidade"));
        
        while (rs1.next()){
            cities.addItem(rs1.getString("cidade"));
        }
        
    }

Onde funcoes.m serve simplesmente para mostrar na tela o resultado da operação.

DAREK6920

Mais uma informação interessante é que se retiro a clausula distinct ele lista normalmente todos os registros da tabela.

Criado 14 de março de 2013
Ultima resposta 14 de mar. de 2013
Respostas 8
Participantes 2