powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JACOB - как вернуть семейство
5 сообщений из 5, страница 1 из 1
JACOB - как вернуть семейство
    #39409996
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Работаю с 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
JACOB - как вернуть семейство
    #39409998
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JACOB - как вернуть семейство
    #39410128
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
JACOB - как вернуть семейство
    #39410188
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XРешение .....
хочешь сказать что этот код совпал с твоим старым кодом?
))
...
Рейтинг: 0 / 0
JACOB - как вернуть семейство
    #39410228
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

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

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

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


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