Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JACOB - как вернуть семейство / 5 сообщений из 5, страница 1 из 1
24.02.2017, 18:19
    #39409996
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JACOB - как вернуть семейство
Доброго дня господа !

Работаю с JACOB - как вернуть семейство ?
Т.е. необходимо на Javе выполнить код
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
      Set AdoRead=WScript.CreateObject("ADODB.Recordset") 
      AdoRead.CursorLocation = 3
      AdoRead.ActiveConnection = cnRead
      AdoRead.Source =sqRead
      AdoRead.ActiveConnection.CommandTimeout = 0
      AdoRead.Open
      Do While Not AdoRead.EOF
        slSave=sqSave
        For Each Field in AdoRead.Fields
          slSave=Replace(slSave,"[" & Field.Name & "]","'" & Replace("" & Field.Value,"'","''") & "'")
        Next
        Call ExecuteSql(AdoSave,slSave)
        AdoRead.MoveNext
      Loop
      AdoRead.Close
      Set AdoRead=Nothing



Реализация Java
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
     rstRead.setProperty("CursorLocation",3);
     rstRead.setProperty("ActiveConnection",acnRead);
     rstRead.setProperty("Source",sqRead);
     rstRead.invoke("Open");
     while (rstRead.getProperty("Eof").getBoolean()==false) 
     {

     rstRead.invoke("MoveNext");
                            		} 
                                    rstRead.invoke("Close");
	                        		acnRead.invoke("Close");
	                        		acnSave.invoke("Close");
...
Рейтинг: 0 / 0
24.02.2017, 18:21
    #39409998
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JACOB - как вернуть семейство
HOME_X,

Извините сорвалось что-то, Форматирую !!!!!
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
     rstRead.setProperty("CursorLocation",3);
     rstRead.setProperty("ActiveConnection",acnRead);
     rstRead.setProperty("Source",sqRead);
     rstRead.invoke("Open");
     while (rstRead.getProperty("Eof").getBoolean()==false) 
     {

           Здесь цикл по семейству 
           For Each Field in AdoRead.Fields

           Next 
           rstRead.invoke("MoveNext");
     } 
     rstRead.invoke("Close");
...
Рейтинг: 0 / 0
25.02.2017, 12:43
    #39410128
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JACOB - как вернуть семейство
HOME_X,

Решение .....
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
	public void PrepareQuery(String text) 
	{
		String con=     ""; 
		String sql=     "";
		String ls = "\r\n";

		try {
			  ActiveXComponent acnSave = new ActiveXComponent("ADODB.Connection"); 
			  ActiveXComponent acnRead = new ActiveXComponent("ADODB.Connection"); 
			  ActiveXComponent rstRead = new ActiveXComponent("ADODB.RecordSet"); 
		
			  String content[]=((String) text+ls+"[Quit]").split(ls);
			  for (String line: content)
			  {
				  if(line.matches("\\[.*\\]"))
				  {
					  if (sql.equals("")==false)
					  {	
						  String section[]=sql.split(';'+ls);
						  if(con.equals("Export"))
						  {
							  for (String command: section)
							  {
								  String export[]=command.split("\\<\\=\\>");
								  acnSave.invoke("Open",export[0].split("\\<\\-\\>")[0]);
								  acnRead.invoke("Open",export[1].split("\\<\\-\\>")[0]);
								  String sqSave        =export[0].split("\\<\\-\\>")[1];
								  String sqRead        =export[1].split("\\<\\-\\>")[1];
								  rstRead.setProperty("CursorLocation",3);
								  rstRead.setProperty("ActiveConnection",acnRead);
								  rstRead.setProperty("Source",sqRead);
								  rstRead.invoke("Open");
								  Variant fields=rstRead.getProperty("Fields");
								  Integer count =Dispatch.get(fields.toDispatch(),"Count").getInt();
								  while (rstRead.getProperty("Eof").getBoolean()==false) 
								  {
									  sqRead=sqSave;
									  for(int i=0;i<count;i++) 
									  {
										  Variant item = Dispatch.call(fields.toDispatch(),"item",new java.lang.Integer(i));
										  String  vals =(Dispatch.get(item.toDispatch(),"Type").getInt()==202)?                Dispatch.get(item.toDispatch(),"Value").getString():
											            (Dispatch.get(item.toDispatch(),"Type").getInt()==  5)?Double.toString(Dispatch.get(item.toDispatch(),"Value").getDouble()):
                                      	          	    (Dispatch.get(item.toDispatch(),"Type").getInt()==  7)?new SimpleDateFormat(this.path.fDay).format(Dispatch.get(item.toDispatch(),"Value").getJavaDate())
                                       	          	    :"null";
                                      	  sqRead=sqRead.replaceAll("\\["+Dispatch.get(item.toDispatch(),"Name").getString().toUpperCase()+"\\]","'"+vals+"'");
									  }
									  acnSave.invoke("Execute",sqRead); 
									  rstRead.invoke("MoveNext");
								  } 
								  rstRead.invoke("Close");
								  acnRead.invoke("Close");
								  acnSave.invoke("Close");
							  }
						  } else 
						  {
							  acnSave.invoke("Open",con);
							  for (String command: section) acnSave.invoke("Execute",command); 
							  acnSave.invoke("Close"   );
						  }
					  }
					  con=line.substring(1,line.length()-1);
					  sql="";
				  } else sql=sql+ls+line;
			}
		} catch (Exception e) 
		{
			e.printStackTrace();
		}
	}
...
Рейтинг: 0 / 0
25.02.2017, 18:45
    #39410188
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JACOB - как вернуть семейство
HOME_XРешение .....
хочешь сказать что этот код совпал с твоим старым кодом?
))
...
Рейтинг: 0 / 0
25.02.2017, 21:39
    #39410228
HOME_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JACOB - как вернуть семейство
Petro123,

Структурно - ДА
Архитектурно - тоже, в смысле переписывать <=100 пользовательских запросов не пришлось
(тема была ниже - это продолжение)

Синтетически нет, детали уточняются

Но цель достигнута - спасибо за участие
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JACOB - как вернуть семейство / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]