string ConStr;
string StrInsert = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» + Application.StartupPath + «\\» + «;Extended Properties=dBASE IV;User ID=Admin;Password=»;
string path = «C:\\base\\»;
string query = » select distinct law.pers_num_k, law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm, reg.pers_num, reg.family, reg.name, reg.father, lcn.sv from lawdat_p as law, register as reg, lcn as lcn where (law.family_k is not null) and (law.name_k is not null) and (reg.num = law.num) and (reg.num = lcn.num) order by law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm»;
string in_str = » insert into regdate (pers_num, family, name, father, d_rogd, d_sm, rayon, pers_num_n, family_n, father_n, name_n, sv) values (@pers_num, @family, @name, @father, @d_rogd, @d_sm, @rayon, @pers_num_n, @family_n, @father_n, @name_n, @sv)»;
DirectoryInfo dir = new DirectoryInfo(path);
DirectoryInfo[] ds = dir.GetDirectories();
foreach (DirectoryInfo d in ds)
{
try
{
ConStr = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» + path + d.Name + «\\» + «;Extended Properties=dBASE IV;User ID=Admin;Password=»;
OleDbConnection conn = new OleDbConnection(ConStr);
OleDbCommand cmd = new OleDbCommand(query, conn);
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
OleDbConnection conn1 = new OleDbConnection(StrInsert);
OleDbCommand cmd1 = new OleDbCommand(in_str, conn1);
cmd1.Parameters.Add(«@pers_num», OleDbType.Char);
cmd1.Parameters[«@pers_num»].Value = reader[0];
cmd1.Parameters.Add(«@family», OleDbType.Char);
cmd1.Parameters[«@family»].Value = reader[1];
cmd1.Parameters.Add(«@name», OleDbType.Char);
cmd1.Parameters[«@name»].Value = reader[2];
cmd1.Parameters.Add(«@father», OleDbType.Char);
cmd1.Parameters[«@father»].Value = reader[3];
cmd1.Parameters.Add(«@d_rogd», OleDbType.Date);
cmd1.Parameters[«@d_rogd»].Value = reader[4];
cmd1.Parameters.Add(«@d_sm», OleDbType.Date);
cmd1.Parameters[«@d_sm»].Value = reader[5];
cmd1.Parameters.Add(«@rayon», OleDbType.Char);
cmd1.Parameters[«@rayon»].Value = d.Name;
cmd1.Parameters.Add(«@pers_num_n», OleDbType.Char);
cmd1.Parameters[«@pers_num_n»].Value = reader[6];
cmd1.Parameters.Add(«@family_n», OleDbType.Char);
cmd1.Parameters[«@family_n»].Value = reader[7];
cmd1.Parameters.Add(«@name_n», OleDbType.Char);
cmd1.Parameters[«@name_n»].Value = reader[8];
cmd1.Parameters.Add(«@father_n», OleDbType.Char);
cmd1.Parameters[«@father_n»].Value = reader[9];
cmd1.Parameters.Add(«@sv», OleDbType.Char);
cmd1.Parameters[«@sv»].Value = reader[10];
conn1.Open();
cmd1.ExecuteNonQuery();
conn1.Close();
}
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
MurCode
- Форумы
- Поиск
- О проекте
irinka
Дата: 17.03.2004 22:50:55
При выполнении выдается такая ошибка:
Ошибочная инструкция SQL: предполагалось delete, insert, procedure, select, update
В коде есть такая строка:
rst2.Open «qrySumma»
«qrySumma» — сохраненный запрос (запрос1), который при выполнении использует поле из др запроса (запрос2), который выполняется, если запущена определенная форма, из которой запрос2 берет две даты в качестве условия выборки.
Что не так может быть в этом запросе?
Deminik
Дата: 18.03.2004 04:55:56
А если попробовать строкой SQL… У меня встречались такие нюансы….
Когда писал rst.Open «myQuery2″…. (вылетала эта твоя ошибка), а когда писал так — все работало:
Dim strSQL as String
strSQL = "select * from myQuery1"
rst.Open strSQL...
...
Попытка — не пытка…
irinka
Дата: 18.03.2004 22:34:48
попробывала, но ругается на строку
rst2.Open strSQL1
а именно:
Dim strSQL1 As String
…
strSQL1 = «Select * from qrySumma»
…
rst2.Open strSQL1
Владимир Саныч
Дата: 18.03.2004 22:38:36
Видимо, Deminik имел в виду не Select * from qrySumma, а взять сам текст запроса qrySumma и поставить его сюда.
irinka
Дата: 18.03.2004 22:46:21
сам запрос я уже пробовала, но к сожалению, неудачно,
кстати, тот запрос, кот я хочу вставить описан выше в вопросе ошибка в group by.
Он работает если использовать так
SELECT Сотрудники.[Табельный № сотрудника], [Должности]![Оклад]/[Праздники]![KolDneyZadano]*[CountYavok]![KolYavok] AS Summa
FROM Праздники, CountYavok, Сотрудники INNER JOIN Должности ON Сотрудники.[Табельный № сотрудника] = Должности.[Табельный № сотрудника]
WHERE ((([Праздники]![s])=[Forms]![ЖурналХозОп1]![с]) AND (([Праздники]![po])=[Forms]![ЖурналХозОп1]![по]) AND ((Сотрудники.[Табельный № сотрудника])=[CountYavok]![Код сотрудника]))
GROUP BY Сотрудники.[Табельный № сотрудника], [Должности]![Оклад]/[Праздники]![KolDneyZadano]*[CountYavok]![KolYavok];
но если в поле Summa использовать вычисляемое поле KolYavok, подсчитанное в этом же запросе, то уже не идет.
Владимир Саныч
Дата: 18.03.2004 22:48:38
Что-то я не вижу, чтобы поле KolYavok было подсчитано в том же запросе.
irinka
Дата: 18.03.2004 22:49:59
Count(Явка.Явка) AS KolYavok
Владимир Саныч
Дата: 18.03.2004 22:55:18
Уважаемая, в этом запросе нет никакого Явка.Явка.
irinka
Дата: 18.03.2004 23:00:02
в данной теме, в моем ответе, кот несколькими пунктами выше я привела пример того же запроса, кот в итоге мне нужен (он работает), но там используется вспом запрос CountYavok с полем KolYavok? а др топикея пыталась перейти к одному запросу, в кот и считается в нем же Count. Вы мне еще сказали про него как это в group by count. Как это может идти представлено в запросе со вспом запросом
извините за путанность
Владимир Саныч
Дата: 18.03.2004 23:02:05
I’m making an Accounting project in C# Visual Studio 2017 and I have three forms:
- Login
- Main
- Product Entry
1st and 2nd form work properly, but when I clicked the button of Product Entry (3rd form),
project doesn’t go to 3rd form and it shows this error:
System.Data.OleDb.OleDbException: ‘Invalid SQL statement; expected
‘DELETE’, ‘INSERT’, ‘PROCEDURE’, ‘SELECT’, or ‘UPDATE’.’
My code is:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Configuration;
using MetroFramework;
namespace MAARS_Software.Project
{
public partial class frmProductEntry : MetroFramework.Forms.MetroForm
{
OleDbConnection con = new
OleDbConnection(ConfigurationManager.AppSettings["con"]);
OleDbConnection conn = new
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=D:\Backup\OneDrive\Documents\Visual Studio 2017\My
Projects\Backups\MAARS Software\DataBase.accdb;
Jet OLEDB: Database Password = 654321");
public frmProductEntry()
{
InitializeComponent();
}
private void frmProductEntry_Load(object sender, EventArgs e)
{
ViewData();
}
private void Save_btn_Click(object sender, EventArgs e)
{
}
private void Update_btn_Click(object sender, EventArgs e)
{
}
private void Delete_btn_Click(object sender, EventArgs e)
{
}
private void Exit_btn_Click(object sender, EventArgs e)
{
}
void ViewData()
{
OleDbDataAdapter da = new OleDbDataAdapter("Selct * from [Product]",
con);
//DataTable dt = new DataTable();
//da.Fill(dt);
DataSet ds = new DataSet();
da.Fill(ds); //Error stop here
dataGridView1.DataSource = ds.Tables[0];
}
}
}
Автор | Сообщение | ||
---|---|---|---|
Заголовок сообщения: Работа с SQL
|
|||
|
Сделал Recordset с текстом SQL такого содержания: Код: SELECT Procedures.Date_procedure, Procedures.Bath_mineral, Procedures.Bath_herb, Procedures.Shower_intestinal, Procedures.Hydromassage, Procedures.Aerovanny, Procedures.Shower_power, Procedures.Shower_circular, Procedures.Shower_ascending myDate задается как параметр. При попытке соединения к БД в самом супервайзере появляется ошибка: Код: Source: Description: Жмешь по кнопке Close появляется след ошибка: Код: Source: Description: Снова жмешь по кнопке Close появляется след ошибка: Код: Source: Description: И в итоге в супервайзере всё таки подключается к БД. Что не так не пойму. |
||
В начало |
|
||
![]() |
Миханик |
Заголовок сообщения: Re: Работа с SQL
|
|
или каким еще образом можно вытащить из БД одну запись по с заданным значением даты, одного из полей? |
В начало |
|
![]() |
Олег |
Заголовок сообщения: Re: Работа с SQL
|
|
Я не пробовал цепляться к базе с помощью SQL запроса Записей на дату может быть несколько, самое простое отфильтровать нужное командой DBExecute( база, «Filter», текст фильтра ) |
В начало |
|
![]() |
AndyRay |
Заголовок сообщения: Re: Работа с SQL
|
|
Миханик писал(а): Сделал Recordset с текстом SQL такого содержания: Код: SELECT Procedures.Date_procedure, Procedures.Bath_mineral, Procedures.Bath_herb, Procedures.Shower_intestinal, Procedures.Hydromassage, Procedures.Aerovanny, Procedures.Shower_power, Procedures.Shower_circular, Procedures.Shower_ascending myDate задается как параметр. При попытке соединения к БД в самом супервайзере появляется ошибка: Код: Source: Description: Попробуйте упростить текст рекордсета : Код: SELECT * FROM Procedures а запрос параметров из базы осуществляйте из скрипта при помощи конструкции на вроде: Код: DBClose( «Connection1.Procedures» ) |
В начало |
|
![]() |
Миханик |
Заголовок сообщения: Re: Работа с SQL
|
|
Олег AndyRay И еще впорос, который меня уже давно мучает и я всё никак не разберусь: Если я создаю Connection и добавляю RecordSet, то потом при открытии командой DBOpen(«Connection1.RecordSet1») появляется ошибка и БД не открывается.. Код: Faled to open Recordset: Connection1.RecordSet1 А если полностью открывать Connection1 командой DBOpen(«Connection1»), а в RecordSet1 поставить галочку «открывать при подключении», то все нормально открывается. |
В начало |
|
![]() |
AndyRay |
Заголовок сообщения: Re: Работа с SQL
|
|
Миханик писал(а): Олег AndyRay И еще впорос, который меня уже давно мучает и я всё никак не разберусь: Если я создаю Connection и добавляю RecordSet, то потом при открытии командой DBOpen(«Connection1.RecordSet1») появляется ошибка и БД не открывается.. Код: Faled to open Recordset: Connection1.RecordSet1 А если полностью открывать Connection1 командой DBOpen(«Connection1»), а в RecordSet1 поставить галочку «открывать при подключении», то все нормально открывается. На вскидку сложно сказать…Можно увидеть параметры, с которыми создан рекордсет? |
В начало |
|
![]() |
Миханик |
Заголовок сообщения: Re: Работа с SQL
|
|
вот действующий RecordSet и не важно что выбирать в качестве источника Table Name или SQL Text:
У вас нет необходимых прав для просмотра вложений в этом сообщении. |
В начало |
|
![]() |
AndyRay |
Заголовок сообщения: Re: Работа с SQL
|
|
Из практики ошибка Код: Execution of function: DBOpen Failed ! может возникать при недоступности источника данных(изменилось название\структура таблицы, с которой связан рекордсет к примеру). Так же перед изменением источника данных рекордсета командой Код: call DBExecute( «Connection1.Procedures», «Source», SQL ) рекордсет необходимо закрыть. |
В начало |
|
![]() |
Даниил |
Заголовок сообщения: Re: Работа с SQL
|
|
Сделал Recordset c SQL текстом такого содержания: SELECT * FROM tect where KOD=324542 При открытие Recordset, все отлично он связывается с базой данных и выводит нужную строчку, а если меняю содержимое Recordset: SELECT * FROM tect А скриптом пытаюсь задать запрос к базе данных: DBClose( «Connection2.Recordset1» ) Выдает ошибки: Может ли на это влиять что версия CX-Surervisor Trial? |
В начало |
|
![]() |
olegzh |
Заголовок сообщения: Re: Работа с SQL
|
|
а может сначала надо открыть (open) соединение, а потом вызвать (execute) запрос? |
В начало |
|
![]() |
Даниил |
Заголовок сообщения: Re: Работа с SQL
|
|
Все спасибо разобрался, причина была в том, что переменная SQL = «SELECT * FROM tect where KOD=324542 « была не текстового формата, я видимо не заметил этого когда выбирал ее. |
В начало |
|
![]() |
a_ivanov
08.09.08
✎
18:25
Народ кто записывал данные в DBF через ADO посредством многострочного запроса? Пишет ошибку «Пропущен символ (;) в конце инструкции SQL.»Ставлю точку с запятой пишет другую ошибку: «Ошибочная инструкция SQL; предполагалось ‘DELETE’, ‘INSERT’, ‘PROCEDURE’, ‘SELECT’ или ‘UPDATE'»
Текст запроса такой:
Insert into cashTax Values(‘2’, ‘1’, ‘1’, ‘1423’, ‘1’, ‘1’, ‘1’, ’18’, ’18 %’, ‘1,53’, ‘1,53’)
Insert into cashSail Values(‘2’, ‘1’, ‘1’, ‘1423’, ‘1’, ‘05.09.2008’, ‘1608’, ’14’, ‘NOSIZE’, ’10’, ‘1’, ’10’, ’10’, ’10’, ‘0’, ‘1’, ‘1’, ‘1’, ‘1’, ‘0’, ‘0’, ‘0’)
По одной строке все нормально записывает
Rebelx
08.09.08
✎
19:17
попробуй:
BEGIN
Запрос1;
Запрос2;
END
(так оракл понимает)
smaharbA
09.09.08
✎
06:34
пеши в одну строку и с ;
(и че у тебя в таблице, все чары ? )
a_ivanov
09.09.08
✎
10:33
Не так тоже не работает. На sql.ru говорят вообще так не получиться :-(((
smaharbA
09.09.08
✎
12:33
(3) получится
Insert into cashTax Values(‘2’, ‘1’, ‘1’, ‘1423’, ‘1’, ‘1’, ‘1’, ’18’, ’18 %’, ‘1,53’, ‘1,53’);Insert into cashSail Values(‘2’, ‘1’, ‘1’, ‘1423’, ‘1’, ‘05.09.2008’, ‘1608’, ’14’, ‘NOSIZE’, ’10’, ‘1’, ’10’, ’10’, ’10’, ‘0’, ‘1’, ‘1’, ‘1’, ‘1’, ‘0’, ‘0’, ‘0’);
Вот к примеру, работает и не жужит
cmd="SET DATEFORMAT YMD;INSERT INTO [" & BaseSQL & "].[dbo].[" & TableSQL & "] ([DATELOG],[SERVICE],[USER],[METH],[SOUR],[PORTS],[DEST],[PORTD],[BYTEIN],[BYTEOUT],[BYTEALL],[CODE]) VALUES (CAST('" & datelog & "' AS DATETIME),'" & service & "','" & user & "','" & meth & "','" & sour & "'," & ports & ",'" & dest & "'," & portd & "," & bytein & "," & byteout & "," & byteall & ",'" & code & "');"
call rs.Open(cmd,con,3,1,1)