Имя: Пароль:
1C
 
Знатокам MySql выборка результата запроса
0 Tarlich
 
26.10.22
08:48
Нужна подсказка

         // Вставить содержимое обработчика.
    СтрокаСоединенияСервером   =    "DRIVER={MySQL ODBC 8.0 Unicode Driver};"+
                                             "SERVER=192.168.123.10;"+
                                             "DATABASE=pacs;"+
                                             "UID=user1c;"+
                                             "PWD=Daniel1234;"+
                                             "MULTI_STATEMENTS=1; "+
                                             "STMT=SET CHARACTER SET utf8";      
    Соединение = Новый COMОбъект("ADODB.Connection");
    Соединение.ConnectionString = (СтрокаСоединенияСервером);
    
    Попытка
        
        Объект.Серии.Очистить();

        для Каждого стр из Объект.dicom_series цикл
            //
            //Соединение.Open();
            //
            //ЗапросSQL =     "SELECT * FROM pacs.dicom_series where ID like '"+Формат(Стр.ID, "ЧГ=")+"'";
            ЗапросSQL =     "SELECT * FROM pacs.dicom_series where ID like '"+"53016"+"'";

            ////Теперь выполняем запрос
            //Command= Новый COMObject("ADODB.Command");
            //Command.CommandText = ЗапросSQL;
            //Command.ActiveConnection = Соединение;
            //Command.CommandType = 1;
            //РезультатMySQL = Command.Execute();
            //
            ////обходим результат запроса    
            //РезультатMySQL.MoveFirst();
            //
            //нн=0;
            //Пока РезультатMySQL.EOF() = 0 Цикл
            //    нн=нн+1;
            //    стр = Объект.Серии.Добавить();
            //    Стр.нн = нн;
            //    Стр.ID                         = РезультатMySQL.Fields("ID").Value;
            //    //Стр.PID                        = РезультатMySQL.Fields("PID").Value;
            //    //Стр.PATIENT_NAME               = РезультатMySQL.Fields("PATIENT_NAME").Value;
            //    //Стр.PATIENT_DOB                = РезультатMySQL.Fields("PATIENT_DOB").Value;
            //    //Стр.STUDY_UID                  = РезультатMySQL.Fields("STUDY_UID").Value;
            //    //Стр.STUDY_DESCRIPTION          = РезультатMySQL.Fields("STUDY_DESCRIPTION").Value;
            //    
            //    РезультатMySQL.MoveNext();
            //    //обработчик разбора результата            
            //КонецЦикла;
            //Соединение.Close();    
            
            ////Закрываем соединение.
            
            
            Соединение = Новый COMОбъект("ADODB.Connection");  
            ////ConnectionString= "DRIVER={MySQL ODBC 5.1         Driver};SERVER=127.0.0.1;DATABASE=Julia;OPTION=3;UID=root";
            //
            НаборЗаписей=Новый COMОбъект("ADODB.Recordset");  
            Если Соединение.state=0 then
                Соединение.open(СтрокаСоединенияСервером);
                Сообщить("Подключились");
            КОнецЕсли;
            //
            ////ТекстЗапроса="select * from 1c_112011";
            НаборЗаписей.ActiveConnection=Соединение;
            НаборЗаписей.Open(ЗапросSQL);
            
            Table=Соединение.execute(ЗапросSQL);
            Пока Table.EOF() = 0 do
                Value1= Table.Fields(0).Value;
                Сообщить(Value1);
                Table.MoveNext();
            КонецЦикла;
            Table.Close();        
        КонецЦикла;    
    Исключение
          Сообщить("Не могу подключиться к базе!!! ");
          Сообщить(Соединение.Errors.Item);
          Возврат;
    КонецПопытки;
КонецПроцедуры    

Сообшить выходит только один раз а должна 8 !!! что упустил ?
https://ibb.co/NL7xW88

Спасибо !
1 shuhard
 
26.10.22
08:53
(0) ты закоментированный код убери, зачем он нам
2 alarm2020
 
26.10.22
08:57
НаборЗаписей.Open(ЗапросSQL);
пока НаборЗаписей.EOF()=0 цикл
...
НаборЗаписей.MoveNext();
конеццикла;
3 Tarlich
 
26.10.22
09:05
(1) - я пробовал и так и так - все равно 1 строка
4 Tarlich
 
26.10.22
09:11
(2) не взлетело - можно чуть больше кода -))
5 Tarlich
 
26.10.22
09:28
СтрокаСоединенияСервером   =    "DRIVER={MySQL ODBC 8.0 Unicode Driver};"+
                                             "SERVER=192.168.123.10;"+
                                             "DATABASE=pacs;"+
                                             "UID=user1c;"+
                                             "PWD=Daniel1234;"+
                                             "MULTI_STATEMENTS=1; "+
                                             "STMT=SET CHARACTER SET utf8";
        
    ///////////////////////////////////////////////////////////////////////////
    Соединение = Новый COMОбъект("ADODB.Connection");      
    НаборЗаписей=Новый COMОбъект("ADODB.Recordset");  
    Если Соединение.state=0 then
        Соединение.open(СтрокаСоединенияСервером);
        Сообщить("Подключились");
    КОнецЕсли;    
    ТекстЗапроса="SELECT * FROM pacs.dicom_series where ID like '"+"53016"+"'";
    НаборЗаписей.ActiveConnection=Соединение;
    НаборЗаписей.Open(ТекстЗапроса);    
    Table=Соединение.execute(ТекстЗапроса);
    Пока Table.EOF() = 0 do
        Value1= Table.Fields(0).Value;
        Сообщить(Value1);
        Table.MoveNext();
    КонецЦикла;
    Table.Close();
6 Tarlich
 
26.10.22
09:28
все равно одна запись
7 Garykom
 
гуру
26.10.22
09:31
ID != STUDY_ID
8 trad
 
26.10.22
09:31
почему должно быть 8?
в таблице 8 записей с id = '53016' ?
9 Garykom
 
гуру
26.10.22
09:31
запросы у тебя разные в 1С и на скрине
10 trad
 
26.10.22
09:33
(8) +
сорри, скрин не увидел
11 Tarlich
 
26.10.22
09:34
(9) Спасибо !!! запутался в study_id
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший