transformação de código vb ---> eclipse

10 respostas
A

Bom dia!!!

É o seguinte eu desenvolvi um código há algum tempo em visual basic mas agora queria faze-lo no eclipse, mas não estou sabendo como…
o código em vb é o seguinte:

'Acesso à base de dados
        Dim conn As New System.Data.OleDb.OleDbConnection
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Desktop\user2.accdb'"
        conn.Open()

        'Inserir valor do ParamNr manualmente
        Dim PNr As String
        PNr = TextBox1.Text

        'Mostrar ParamNr de forma automática
        Dim Param As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        Param.CommandText = " SELECT ParamNr FROM Parameter "

        Dim resu As Integer
        resu = Convert.ToInt32(Param.ExecuteScalar)

        TextBox1.Text = resu

        'Calculo do máximo por coluna de D (16* =  de colunas)
        Dim selectD1 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD1.CommandText = " SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP1 As Integer
        DAP1 = Convert.ToInt32(selectD1.ExecuteScalar)

        Dim selectD2 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD2.CommandText = " SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP2 As Integer
        DAP2 = Convert.ToInt32(selectD2.ExecuteScalar)

        Dim selectD3 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD3.CommandText = " SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP3 As Integer
        DAP3 = Convert.ToInt32(selectD3.ExecuteScalar)

        Dim selectD4 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD4.CommandText = " SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP4 As Integer
        DAP4 = Convert.ToInt32(selectD4.ExecuteScalar)

        Dim selectD5 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD5.CommandText = " SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP5 As Integer
        DAP5 = Convert.ToInt32(selectD5.ExecuteScalar)

        Dim selectD6 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD6.CommandText = " SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP6 As Integer
        DAP6 = Convert.ToInt32(selectD6.ExecuteScalar)

        Dim selectD7 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD7.CommandText = " SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP7 As Integer
        DAP7 = Convert.ToInt32(selectD7.ExecuteScalar)

        Dim selectD8 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD8.CommandText = " SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP8 As Integer
        DAP8 = Convert.ToInt32(selectD8.ExecuteScalar)

        Dim selectD9 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD9.CommandText = " SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP9 As Integer
        DAP9 = Convert.ToInt32(selectD9.ExecuteScalar)

        Dim selectD10 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD10.CommandText = " SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP10 As Integer
        DAP10 = Convert.ToInt32(selectD10.ExecuteScalar)

        Dim selectD11 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD11.CommandText = " SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP11 As Integer
        DAP11 = Convert.ToInt32(selectD11.ExecuteScalar)

        Dim selectD12 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD12.CommandText = " SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP12 As Integer
        DAP12 = Convert.ToInt32(selectD12.ExecuteScalar)

        Dim selectD13 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD13.CommandText = " SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP13 As Integer
        DAP13 = Convert.ToInt32(selectD13.ExecuteScalar)

        Dim selectD14 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD14.CommandText = " SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP14 As Integer
        DAP14 = Convert.ToInt32(selectD14.ExecuteScalar)

        Dim selectD15 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD15.CommandText = " SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP15 As Integer
        DAP15 = Convert.ToInt32(selectD15.ExecuteScalar)

        Dim selectD16 As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        selectD16.CommandText = " SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = " & PNr

        Dim DAP16 As Integer
        DAP16 = Convert.ToInt32(selectD16.ExecuteScalar)

        'Criação de vector com todos os máximos calculados
        Dim vector() As Integer

        ReDim vector(15)

        vector(0) = DAP1
        vector(1) = DAP2
        vector(2) = DAP3
        vector(3) = DAP4
        vector(4) = DAP5
        vector(5) = DAP6
        vector(6) = DAP7
        vector(7) = DAP8
        vector(8) = DAP9
        vector(9) = DAP10
        vector(10) = DAP11
        vector(11) = DAP12
        vector(12) = DAP13
        vector(13) = DAP14
        vector(14) = DAP15
        vector(15) = DAP16

        'Coloca vector por ordem crescente
        Array.Sort(vector)

        'Devolve-nos o último valor do vector --> valor máximo de todos os máximos calculados
        TextBox2.Text = vector(15)

        'Insere o valor na tabela Parameter
        Dim insertDAP As System.Data.OleDb.OleDbCommand = conn.CreateCommand()
        insertDAP.CommandText = " UPDATE Parameter SET DAP = ('" & vector(15) & "') WHERE ParamNr = " & PNr
        insertDAP.ExecuteNonQuery()

só que não queria que o PNr fosse inserido pelo utilizador, mas sim ele ir calculando para todos os PNr existentes na tabela.

alguém me dá uma ajudinha???

Obrigada

10 Respostas

Felagund

Qual sua dúvida?

vc já começou a converter em texto?

se vc quiser criar uma interface grafica para o usuário entrar com os dados procure por Swing, caso possa ser uma tela, vc pode usar o proprio console para as entradas de dados.

D

Bom dia!

Procure explicar melhor o funcionamento deste teu código. Você precisa avaliar o máximo de 16 colunas de uma tabela para capturar o máximo “geral” e então atualizar outra coluna desta tabela com este valor?

[]'s

A

Queria saber como transformar o código de vb para java-eclipse.

E queria que o PNr não fosse inserido pelo utilizador, mas sim de forma automatica. Ou seja, tenho uma tabela cujo PNr é primary-key autonumber, e ai vejo por exemplo que tenho PNr de 1 a 20.

Numa outra tabela o PNr existe, e posso ter por exemplo vinte linhas só de referencia ao PNr 1, e cada linha tem 16 colunas (D1, D2,…D16), neste caso iria ter (16 colunas * 20 linhas) de valores só para um PNr. E quero calcular o maximo de cada coluna de D1 a D16 enquanto o PNr é o mesmo, e depois calcular o máximo desses maximos anteriormente calculados (o maximo entre D1 e D16).

M

Olha eu já li esse tópico algumas vezes e pelo que eu vi o problema não é a conversão do código e sim java. Eu desconheço algum plugin que possa converter o código de VB para java.

Não leve a mal a pergunta mas, você sabe java? Se não souber fica difícil mesmo.

E outra coisa, é java e não java-eclipse, Eclipse é só uma IDE java pode ser escrito em qualquer editor de texto ou IDE.

Acho que o pessoal estaria mais apto à ajudar nas tuas duvidas, o que te aconselho é começar a escrever o código e ir postando as duvidas conforme forem surgindo, pode ser mais produtivo.

Best regards.

A

Já passei o código para java, mas ele não está entrando no ciclo if (----------------->)!!! O que está errado???

[code]
package msi;

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;

public class Open
{
public static final long Tempo = 60000; //repete o código a cada 60000milissegundos = 1minuto
public static void lerficheiro(){

ArrayList a= new ArrayList ();
String linha = null;

try {
File f = new File("C:/msi"); //vai à pasta dos ficheiros
File[] lista = f.listFiles();

for(File arquivo : lista) {

FileReader reader = new FileReader(arquivo); // lê ficheiro
BufferedReader leitor = new BufferedReader(reader);

while ((linha = leitor.readLine()) != null) {
StringTokenizer st;
st = new StringTokenizer(linha, "\t"); //lê o ficheiro linha a linha

String t = "";

Pattern p = Pattern.compile(t);
Matcher m = p.matcher(linha); //procura string t e devolve a linha caso encontre

while (m.find()) {
String x = arquivo.getPath(); // mostra o nome do ficheiro onde está a palavra
System.out.println("" + x);
System.out.println(m.group());

BufferedReader rd = new BufferedReader(new FileReader(x));
LineNumberReader lineNumberReader = new LineNumberReader(rd);

String id = null;
String nome = null;
String prim = null;
String ult = null;
String dn = null;
String ano = null;
String mes = null;
String dia = null;
String fimdn = null;
String fimdt = null;
String fimt = null;
int sex = 0;
long idd = 0;
String nr = null;
String sala = null;
String mod = null;
String sd = null;
String dat = null;
String tim = null;
String hora = null;
String min = null;
String seg = null;
String p_dos = null;
String ty = null;
String sexo = null;

Pattern pattern = Pattern.compile("(.+) <([^>]+)>"); //retira os valores que estão entre < >
String line;
while ((line = lineNumberReader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {

String chave = matcher.group(1); //lê a 1ª coluna---chaves
System.out.println(chave);
String valor = matcher.group(2); //lê a 2ª coluna---valores
System.out.println(valor);

if (chave.equals("PATIENT_ID")) {
id = valor;

} else if (chave.equals("PATIENT_NAME")) {
nome = valor;
int cont = nome.split(" ").length;
String s[] = nome.split("\\ ");
prim = s[0];
ult = s[cont-1]; //retira o primeiro e o ultimo nome

} else if (chave.equals("PATIENT_BIRTH_DATE")) {
dn = valor;
char[] letras = dn.toCharArray();
char primeira = dn.charAt(0);
char segunda = dn.charAt(1);
char terceira = dn.charAt(2);
char quarta = dn.charAt(3);

char priseg = dn.charAt(4);
char segseg = dn.charAt(5);

char priter = dn.charAt(6);
char segter = dn.charAt(7);

ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
mes = (""+priseg+""+segseg+"");
dia = (""+priter+""+segter+"");

fimdn = (""+dia+"-"+mes+"-"+ano+""); //forma data de nascimento de forma a ser lida em access

SimpleDateFormat sdf = new SimpleDateFormat ("dd-MM-yyyy");
Date datahj = new Date();
String dataform = sdf.format(datahj); //mostra a data de hoje

Date date =sdf.parse(fimdn);
Date dath =sdf.parse(dataform);

long diferenca = dath.getTime() - date.getTime();
long difseg = diferenca / 1000;
long difmin = difseg / 60;
long difhora = difmin / 60;
long difdia = difhora / 24;
long difano = difdia / 365;

idd = difano; // mostra a idade do paciente

if (difano<18){
ty = "infantil"; //devolve pediatrico quando idade é inferior a 18 anos
}else if (difano>=18){
ty = "adulto"; //devolve adulto quando idade igual ou superior a 18anos
}

} else if (chave.equals("PATIENT_SEX")){
sexo = valor;
if (valor.equals("M")){
sex = 0; //devolve 0 quando sexo é masculino
}
else if (valor.equals("F")){
sex = 1; //devolve 1 quando sexo é feminino
}

} else if (chave.equals("STUDY_ID")){
nr = valor;

} else if (chave.equals("SCHEDULED_STUDY_RESOURCE")){
sala = valor;

} else if (chave.equals("MODALITY")){
mod = valor;

} else if (chave.equals("STUDY_DESCRIPTION")){
sd = valor;

if (valor.contains("CEFALOMETRIA") && ty.equals("pediatrico")){
p_dos = "3331";
}else if (valor.contains("CEFALOMETRIA") && ty.equals("adulto")){
p_dos = "3332";
}else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("pediatrico")){
p_dos = "1111";
}else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("adulto")){
p_dos = "1112";
}// valores definidos para cefalometria pediatrico e adulto e para ortopantomografia pediatrico e adulto

} else if (chave.equals("SCHEDULED_STUDY_START_DATE")){
dat = valor;

char[] letras = dat.toCharArray();
char primeira = dat.charAt(0);
char segunda = dat.charAt(1);
char terceira = dat.charAt(2);
char quarta = dat.charAt(3);

char priseg = dat.charAt(4);
char segseg = dat.charAt(5);

char priter = dat.charAt(6);
char segter = dat.charAt(7);

ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
mes = (""+priseg+""+segseg+"");
dia = (""+priter+""+segter+"");

fimdt = (""+dia+"-"+mes+"-"+ano+""); //formula data de acordo com formato definido pelo access

} else if (chave.equals("SCHEDULED_STUDY_START_TIME")){
tim = valor;

char[] letras = tim.toCharArray();
char primeira = tim.charAt(0);
char segunda = tim.charAt(1);

char priseg = tim.charAt(2);
char segseg = tim.charAt(3);

char priter = tim.charAt(4);
char segter = tim.charAt(5);

hora = (""+primeira+""+segunda+"");
min = (""+priseg+""+segseg+"");
seg = (""+priter+""+segter+"");

fimt = (""+hora+":"+min+":"+seg+""); //formata hora de acordo com o formato definido pelo access
}
}//end if
} //end while

// conexão ACCESS
String caminho = "C:/user.mdb";
Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + caminho);


Statement stm = con.createStatement();

ResultSet rsa = stm.executeQuery ("SELECT Id FROM PatientData WHERE Id = '"+nr+"'"); //query necessária tendo em conta a repetição de ficheiros no access


if (rsa.next()){
String resultadoa = rsa.getString("Id");
System.out.println(resultadoa);

Pattern p1a = Pattern.compile(resultadoa);
Matcher m1a = p1a.matcher(resultadoa);

while(m1a.find()){ // se encontrar o mesmo valor de id, elimina o ficheiro nesse instante, evitando assim que se gere erro com a query do insert

String aquia = arquivo.getAbsolutePath();
System.out.println(aquia);
arquivo.deleteOnExit();

System.out.println("Apaguei Access");

}
}else{

stm.executeUpdate(" INSERT INTO PatientData (Id, Surname, [First Name], [Date Of Birth], Sex, Age, Type, [Scheduled Study Resource], Modality, [P Dose], [Study Description], [Scheduled Study Start Date], [Scheduled Study Start Time]) VALUES ('"+nr+"','"+ult+"','"+prim+"','"+fimdn+"',"+sex+", '"+idd+"', '"+ty+"', '"+sala+"','"+mod+"',"+p_dos+",'"+sd+"','"+fimdt+"','"+fimt+"')");

System.out.println("Inseri Access");


//identifica ParamNr do paciente
ResultSet dapa = stm.executeQuery("SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '"+nr+"'))");


--------------------------> if (dapa.next()){
String ia = dapa.getString("ResumeNr");
System.out.println("Parametro"+ia);

stm.executeQuery("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("dapa"+dapa);
int DAP1 = stm.executeUpdate("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("D1"+DAP1);
stm.executeQuery("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+dapa+"'");
int DAP2 = stm.executeUpdate("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("D2"+DAP2);
stm.executeQuery("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP3 = stm.executeUpdate("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D3"+DAP3);
stm.executeQuery("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP4 = stm.executeUpdate("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D4"+DAP4);
stm.executeQuery("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP5 = stm.executeUpdate("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D5"+DAP5);
stm.executeQuery("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP6 = stm.executeUpdate("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D6"+DAP6);
stm.executeQuery("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP7 = stm.executeUpdate("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D7"+DAP7);
stm.executeQuery("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP8 = stm.executeUpdate("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D8"+DAP8);
stm.executeQuery("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP9 = stm.executeUpdate("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D9"+DAP9);
stm.executeQuery("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP10 = stm.executeUpdate("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D10"+DAP10);
stm.executeQuery("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP11 = stm.executeUpdate("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D11"+DAP11);
stm.executeQuery("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP12 = stm.executeUpdate("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D12"+DAP12);
stm.executeQuery("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP13 = stm.executeUpdate("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D13"+DAP13);
stm.executeQuery("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP14 = stm.executeUpdate("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D14"+DAP14);
stm.executeQuery("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP15 = stm.executeUpdate("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D15"+DAP15);
stm.executeQuery("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP16 = stm.executeUpdate("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D16"+DAP16);

int[] vector = new int [15];

vector [0] = DAP1;
vector [1] = DAP2;
vector [2] = DAP3;
vector [3] = DAP4;
vector [4] = DAP5;
vector [5] = DAP6;
vector [6] = DAP7;
vector [7] = DAP8;
vector [8] = DAP9;
vector [9] = DAP10;
vector [10] = DAP11;
vector [11] = DAP12;
vector [12] = DAP13;
vector [13] = DAP14;
vector [14] = DAP15;
vector [15] = DAP16;

Arrays.sort(vector);

stm.executeQuery("UPDATE Parameter SET DAP = ("+vector [15]+") WHERE ParamNr = '"+ia+"'");
System.out.println("Actualização concluída");
}
ResultSet dosea = stm.executeQuery("SELECT DAP FROM Parameter WHERE ResumeNr IN (SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '"+nr+"'");
String da = dosea.getString("DAP");
System.out.println("dose"+da);
}

con.close();
rd.close();

} //end while

} //end while
reader.close();
arquivo.delete(); // todos os ficheiros são elinimados após terem sido lidos e eviados para a base de dados

} //end for

mostrar(a);

} catch (Exception e) { //end try
e.printStackTrace();
} //end catch
} //end lerficheiro

public static void mostrar(ArrayList b)
{
for (int i=0; i {
System.out.println(b.get(i));
}
}

public static void main(String[] args)
{
System.out.println("A iniciar....");
Timer timer = null;
if(timer == null){
timer = new Timer();
TimerTask tarefa = new TimerTask(){
public void run(){
try{
System.out.println("Continua...");
lerficheiro();
}catch (Exception e){
e.printStackTrace();
}
}
};
timer.scheduleAtFixedRate(tarefa, Tempo, Tempo);
}
}
}

M

coloca teu código entre as tags [code] senão fica difícil de ler.

A

desculpa…esqueci de fechar a tag

package msi;

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;

public class Open 
{
	public static final long Tempo = 60000; //repete o código a cada 60000milissegundos = 1minuto
   public static void lerficheiro(){
	
	  ArrayList<String> a= new ArrayList <String>();
	   String linha = null;   
	   
   try {  
	   File f = new File("C:/msi"); //vai à pasta dos ficheiros
	      File[] lista = f.listFiles(); 
	        
	      for(File arquivo : lista) {  
	    
	           FileReader reader = new FileReader(arquivo);  // lê ficheiro
	             BufferedReader leitor = new BufferedReader(reader);  
	       
	            while ((linha = leitor.readLine()) != null) {  
	            	 StringTokenizer st;  
	                 st = new StringTokenizer(linha, "\t");   //lê o ficheiro linha a linha
	                   
	                   String t = "<CR>"; 
	                   
		         Pattern p = Pattern.compile(t);  
		         Matcher m = p.matcher(linha); //procura string t e devolve a linha caso encontre
		           
		         while (m.find()) {  
		        	String x = arquivo.getPath(); // mostra o nome do ficheiro onde está a palavra
		            System.out.println("" + x);  
		            System.out.println(m.group());
                 
                            BufferedReader rd = new BufferedReader(new FileReader(x));
                            LineNumberReader lineNumberReader = new LineNumberReader(rd);
                        
                            String id = null;
                            String nome = null;
                            String prim = null;
                            String ult = null;
                            String dn = null;
                            String ano = null;
                            String mes = null;
                            String dia = null;
                            String fimdn = null;
                            String fimdt = null;
                            String fimt = null;
                            int sex = 0;
                            long idd = 0;
                            String nr = null;
                            String sala = null;
                            String mod = null;
                            String sd = null;
                            String dat = null;
                            String tim = null;
                            String hora = null;
                            String min = null;
                            String seg = null;
                            String p_dos = null;
                            String ty = null;
                            String sexo = null;
                          
                                         Pattern pattern = Pattern.compile("(.+) <([^>]+)>");  //retira os valores que estão entre < >
                                         String line;  
                                         while ((line = lineNumberReader.readLine()) != null) {  
                                             Matcher matcher = pattern.matcher(line);  
                                             if (matcher.matches()) {  
                                                
												String chave = matcher.group(1); //lê a 1ª coluna---chaves
                                                 System.out.println(chave);
                                                 String valor = matcher.group(2); //lê a 2ª coluna---valores
                                                 System.out.println(valor);
                                                
                                                 if (chave.equals("PATIENT_ID")) {  
                                                	                         id = valor;
                                               	                     
                                                	                      } else if (chave.equals("PATIENT_NAME")) {  
                                                	                          nome = valor;  
                                                	                          int cont = nome.split(" ").length;
                                                	                          String s[] = nome.split("\ "); 
                                                	                          prim = s[0];  
                                                	                          ult = s[cont-1]; //retira o primeiro e o ultimo nome
                                                	         	              
                                                	                      } else if (chave.equals("PATIENT_BIRTH_DATE")) {  
                                                	                          dn = valor; 
                                                	                          char[] letras = dn.toCharArray(); 
                                                	                          char primeira = dn.charAt(0); 
                                                	                          char segunda = dn.charAt(1);
                                                	                          char terceira = dn.charAt(2);
                                                	                          char quarta = dn.charAt(3);
                                                	                          
                                                	                          char priseg = dn.charAt(4);
                                                	                          char segseg = dn.charAt(5);
                                                	                          
                                                	                          char priter = dn.charAt(6);
                                                	                          char segter = dn.charAt(7);
                                                	                          
                                                	                          ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
                                                	                          mes = (""+priseg+""+segseg+"");
                                                	                          dia = (""+priter+""+segter+"");
                                                	                          
                                                	                          fimdn = (""+dia+"-"+mes+"-"+ano+""); //forma data de nascimento de forma a ser lida em access
                                                	                       
                                                	                          SimpleDateFormat sdf = new SimpleDateFormat ("dd-MM-yyyy"); 
                                                	                          Date datahj = new Date();
                                                	                          String dataform = sdf.format(datahj); //mostra a data de hoje
                                                	                     
                                                	                          Date date =sdf.parse(fimdn);
                                                	                          Date dath =sdf.parse(dataform);
                                                	                          
                                                	                          long diferenca = dath.getTime() - date.getTime();
                                                	                          long difseg = diferenca / 1000;
                                                	                          long difmin = difseg / 60;
                                                	                          long difhora = difmin / 60;
                                                	                          long difdia = difhora / 24;
                                                	                          long difano = difdia / 365;
                                                	                         
                                                	                          idd = difano; // mostra a idade do paciente
                                                	                          
                                                	                          if (difano<18){ 
                                                	                        	  ty = "infantil"; //devolve pediatrico quando idade é inferior a 18 anos
                                                	                          }else if (difano>=18){
                                                	                        	  ty = "adulto"; //devolve adulto quando idade igual ou superior a 18anos
                                                	                          }
                                                	                          
                                                	                      } else if (chave.equals("PATIENT_SEX")){
                                                	                    	  sexo = valor;
                                                	                    	  if (valor.equals("M")){
                                                	                    		  sex = 0; //devolve 0 quando sexo é masculino
                                                	                    	  }
                                                	                    	  else if (valor.equals("F")){
                                                	                    		  sex = 1; //devolve 1 quando sexo é feminino
                                                	                    	  }
                                                	                    	
                                                	                      } else if (chave.equals("STUDY_ID")){
                                                	                    	  nr = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_RESOURCE")){
                                                	                    	  sala = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("MODALITY")){
                                                	                    	  mod = valor;
                                                	                    	  
                                                	                      } else if (chave.equals("STUDY_DESCRIPTION")){
                                                	                    	  sd = valor;
                                                	                    	
                                                                               if (valor.contains("CEFALOMETRIA") && ty.equals("pediatrico")){
                                                                    				p_dos = "3331";
                                                                                }else if (valor.contains("CEFALOMETRIA") && ty.equals("adulto")){
                                                                            	    p_dos = "3332";
                                                                                }else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("pediatrico")){
                                                                    				p_dos = "1111";
                                                                    			}else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("adulto")){
                                                                    				p_dos = "1112";
                                                                    			}// valores definidos para cefalometria pediatrico e adulto e para ortopantomografia pediatrico e adulto
                                                                    			 
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_START_DATE")){
                                                	                    	  dat = valor;
                                                	                    	  
                                                	                    	  char[] letras = dat.toCharArray(); 
                                                	                          char primeira = dat.charAt(0); 
                                                	                          char segunda = dat.charAt(1);
                                                	                          char terceira = dat.charAt(2);
                                                	                          char quarta = dat.charAt(3);
                                                	                          
                                                	                          char priseg = dat.charAt(4);
                                                	                          char segseg = dat.charAt(5);
                                                	                          
                                                	                          char priter = dat.charAt(6);
                                                	                          char segter = dat.charAt(7);
                                                	                          
                                                	                          ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
                                                	                          mes = (""+priseg+""+segseg+"");
                                                	                          dia = (""+priter+""+segter+"");
                                                	                         
                                                	                          fimdt = (""+dia+"-"+mes+"-"+ano+""); //formula data de acordo com formato definido pelo access
                                                	                    	
                                                	                      } else if (chave.equals("SCHEDULED_STUDY_START_TIME")){
                                                	                          tim = valor;
                                                	                          
                                                	                          char[] letras = tim.toCharArray(); 
                                                	                          char primeira = tim.charAt(0); 
                                                	                          char segunda = tim.charAt(1);
                                                	                          
                                                	                          char priseg = tim.charAt(2);
                                                	                          char segseg = tim.charAt(3);
                                                	                          
                                                	                          char priter = tim.charAt(4);
                                                	                          char segter = tim.charAt(5);
                                                	                          
                                                	                          hora = (""+primeira+""+segunda+"");
                                                	                          min = (""+priseg+""+segseg+"");
                                                	                          seg = (""+priter+""+segter+"");
                                                	                          
                                                	                          fimt = (""+hora+":"+min+":"+seg+""); //formata hora de acordo com o formato definido pelo access
                                                	                      }   
                                                       }//end if
                                        }  //end while
                                        
                 // conexão ACCESS                        
		         String caminho = "C:/Programas/PTW/DiaSoft/DataBase/user.mdb";
                 Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();  
                 Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + caminho);
              
                 
                 Statement stm = con.createStatement();
                
                 ResultSet rsa = stm.executeQuery ("SELECT Id FROM PatientData WHERE Id = '"+nr+"'"); //query necessária tendo em conta a repetição de ficheiros no access
             
                 
				if (rsa.next()){
					String resultadoa = rsa.getString("Id");
					System.out.println(resultadoa);
			         
					Pattern p1a = Pattern.compile(resultadoa);
					Matcher m1a = p1a.matcher(resultadoa);
					
					while(m1a.find()){ // se encontrar o mesmo valor de id, elimina o ficheiro nesse instante, evitando assim que se gere erro com a query do insert
			
						String aquia = arquivo.getAbsolutePath();
						System.out.println(aquia);
						arquivo.deleteOnExit();
						
						System.out.println("Apaguei Access");
				
					} 
				}else{
					
					stm.executeUpdate(" INSERT INTO PatientData (Id, Surname, [First Name], [Date Of Birth], Sex, Age, Type, [Scheduled Study Resource], Modality, [P Dose], [Study Description], [Scheduled Study Start Date], [Scheduled Study Start Time]) VALUES ('"+nr+"','"+ult+"','"+prim+"','"+fimdn+"',"+sex+", '"+idd+"', '"+ty+"', '"+sala+"','"+mod+"',"+p_dos+",'"+sd+"','"+fimdt+"','"+fimt+"')");
				
				    System.out.println("Inseri Access");
				
				
				//identifica ParamNr do paciente
				ResultSet dapa = stm.executeQuery("SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '10834'))");
                
				
             if (dapa.next()){
           	       String ia = dapa.getString("ResumeNr");
                   System.out.println("Parametro"+ia);
				   
                    stm.executeQuery("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+ia+"'");
				    System.out.println("dapa"+ia);
					int DAP1 = stm.executeUpdate("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D1"+DAP1);
					stm.executeQuery("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP2 = stm.executeUpdate("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D2"+DAP2);
					stm.executeQuery("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP3 = stm.executeUpdate("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D3"+DAP3);
					stm.executeQuery("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP4 = stm.executeUpdate("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D4"+DAP4);
					stm.executeQuery("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP5 = stm.executeUpdate("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D5"+DAP5);
					stm.executeQuery("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP6 = stm.executeUpdate("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D6"+DAP6);
					stm.executeQuery("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP7 = stm.executeUpdate("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D7"+DAP7);
					stm.executeQuery("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP8 = stm.executeUpdate("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D8"+DAP8);
					stm.executeQuery("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP9 = stm.executeUpdate("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D9"+DAP9);
					stm.executeQuery("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP10 = stm.executeUpdate("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D10"+DAP10);
					stm.executeQuery("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP11 = stm.executeUpdate("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D11"+DAP11);
					stm.executeQuery("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP12 = stm.executeUpdate("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D12"+DAP12);
					stm.executeQuery("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP13 = stm.executeUpdate("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D13"+DAP13);
					stm.executeQuery("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP14 = stm.executeUpdate("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D14"+DAP14);
					stm.executeQuery("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP15 = stm.executeUpdate("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D15"+DAP15);
					stm.executeQuery("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
					int DAP16 = stm.executeUpdate("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
					System.out.println("D16"+DAP16);
			
                int[] vector = new int [15];
				
                vector [0] = DAP1;
                vector [1] = DAP2;
                vector [2] = DAP3;
                vector [3] = DAP4;
                vector [4] = DAP5;
                vector [5] = DAP6;
                vector [6] = DAP7;
                vector [7] = DAP8;
                vector [8] = DAP9;
                vector [9] = DAP10;
                vector [10] = DAP11;
                vector [11] = DAP12;
                vector [12] = DAP13;
                vector [13] = DAP14;
                vector [14] = DAP15;
                vector [15] = DAP16;
                
                Arrays.sort(vector);
                
                stm.executeQuery("UPDATE Parameter SET DAP = ("+vector [15]+") WHERE ParamNr = '"+ia+"'");
                System.out.println("Actualização concluída");
		        }
                ResultSet dosea = stm.executeQuery("SELECT DAP FROM Parameter WHERE ResumeNr IN (SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '"+nr+"'");
                String da = dosea.getString("DAP");
                System.out.println("dose"+da);
				}
               
					  con.close();
                      rd.close();  
                     
		         } //end while
		      
	             } //end while
	            reader.close();
	        arquivo.delete(); // todos os ficheiros são elinimados após terem sido lidos e eviados para a base de dados
	            
	      } //end for
	     
	             mostrar(a);
	           
	          } catch (Exception e) {  //end try
	             e.printStackTrace();  
	          }  //end catch
	} //end lerficheiro
 
public static void mostrar(ArrayList <String> b)
   {
      for (int i=0; i<b.size(); i++)
      {
         System.out.println(b.get(i));   
   }
   }
  
public static void main(String[] args)
   {
	System.out.println("A iniciar....");
	Timer timer = null;
	if(timer == null){
		timer = new Timer();
		TimerTask tarefa = new TimerTask(){
		public void run(){
			try{
				System.out.println("Continua...");
				lerficheiro();
			}catch (Exception e){
				e.printStackTrace();
			}
		}
	};
	timer.scheduleAtFixedRate(tarefa, Tempo, Tempo); //o código pós main, é o que permite a repetição da execução do código a cada x tempo anteriormente definido (neste caso = 1 minuto)
      }
}
}
A

ele já está entrando no if, mas n faz nada a partir da linha 257…

M

não faz nada, mas da exception? Pelo menos uma Exception tem que dar

A

Diz “No row count was produced”

Mas o código no vb não dá erro nh :?

Criado 29 de março de 2010
Ultima resposta 30 de mar. de 2010
Respostas 10
Participantes 4