Маринчик 0 / 0 / 3 Регистрация: 12.10.2012 Сообщений: 150 |
||||||||||||||
1 |
||||||||||||||
Ошибки при заполнении полей запросами02.05.2015, 18:42. Показов 4940. Ответов 3 Метки нет (Все метки)
при помощи запросов sql , прикрепленных в файле — создала таблицы..
выбивает ошибку «Инструкция INSERT INTO содержит неизвестное имя поля №будинку.Проверьте что имя задано без ошибок, и повторите операцию»
как отдельный запрос он работает, но как я понимаю — что из этого запроса значение для код_тарифу должно копироваться в таблицу тОплата_план, т.е. я создаю следующий запрос:
выбивает ошибку, что на картинке Миниатюры
Вложения
0 |
mobile 26782 / 14461 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
02.05.2015, 20:33 |
2 |
|||
1-я ошибка: В запросе на вставку должно быть соответствие количества полей. Вы же в селекте пишете звездочку, т.е. все поля, а в таблице тБудинки 3 поля. Именно об этом акс Вас информирует.
2-я ошибка Во-первых пара ошибок в синтаксисе запроса. Предложение Where должно быть таким (логику не знаю, сужу только по синтаксису)
И кроме того, был символ точка с запятой перед заверщающей скобкой. А точка с запятой это символ конца запроса. Ну и самое важное. В таблице тОплата_план есть 3 обязательных поля: код_оплати_план (ключ), код_тарифу и код_квартири. Попытка создать запись, заполнив только одно из них, приведет к ошибке. Что и случилось
0 |
Маринчик 0 / 0 / 3 Регистрация: 12.10.2012 Сообщений: 150 |
||||
03.05.2015, 23:58 [ТС] |
3 |
|||
ну не понимаю я сама что не так по первой ошибке моей исправила запрос на следущий
а выбивает сообщение с картинки что же не так???????? я не понимаю сама… Миниатюры
0 |
26782 / 14461 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
|
04.05.2015, 01:52 |
4 |
выбивает сообщение с картинки Скорее всего причина в том, что в нескольких записях (судя по картинке в 2) поля [№квартири] или [код_будинку] в таблице тБудинки не заполнены. Пустые. А они обязательные. Вот программа об этом и сообщает
0 |
I’ve been asked to do some updates on an Access 2007 VBA application. My experience is mostly with Excel VBA, not much with Access.
In one place, we’re adding some additional fields. One of the tables is exported to an Excel workbook like this:
DoCmd.TransferText acExportDelim, «(text file specification)», «(source table name)», (path to CSV file to be created), True
After adding the new fields to the source table, I get the error:
«The INSERT INTO statement contains the following unknown field name: ‘(field name)’. Make sure you have typed the name correctly, and try the operation again.»
After reading what I could find on this, I understand that the problem is that the «text file specification» does not have the new fields. And further, that I can’t edit the text file specification but instead must create a new one.
Okay, I can do that. But how do I know everything the previous text file specification was doing? I can see the result, but that doesn’t necessarily tell me everything it did.
Is it possible to see, even if read only, that text file specification? If I go (in Access 2007) to External Data tab > Export section > Saved Exports, and go to the Saved Exports tab, I see a single item there that may be the one, though it doesn’t seem to have the same name there as what I see in the DoCmd.TransferText line. However I don’t see any way of viewing what it does; just a name for it, a description (which is blank), and a path (which is not currently valid).
Is there a better way than playing guessing games about what the old text file specification does?
Any suggestions?
Thanks,
Greg
Привет всем.
Есть БД MS Access с таблицей Table1.
Поля:
Account (строковая переменная)
Password (строковая переменная)
ID (счетчик)
Comment (строковая переменная)
В BC++ Builder (v6.0 Enterprise) добавил компоненту TADOQuery и В ее свойство SQL записал запрос следующего вида:
INSERT INTO Table1 (Account, Password, Comment) VALUES (1,’11’,111)
Прога запускается и при срабатывании этого запроса выдается ошибка:
«Project Proj1.exe rised exaption class EOleException with message ‘Ошибка синтаксиса в инструкции INSERT INTO’ «.
Запись не добавляется. Насколько я понял он ругается на поле Password (кажется он воспринимает его как какое-то служебное слово, инструкция …).
Поменять его название нельзя — этой таблицей пользуется еще другая прога.
Пробовал по другому:
INSERT INTO Table1 (Account, Table1.Password, Comment) VALUES (1,’11’,111)
тоже не работает, говорит, что запрос содержит неизвестное имя поля Table1.Password.
Как сделать так чтоб INSERT INTO нормально добавлял мои записи с заданными мною значениями Password?
Создал в MS SQL Server 2000 такую же таблицу. Через QueryAnalizer запустил такие же запросы — оба нормально добавили новые записи. А вот в BC++ Builder c MS Access БД что-то не получается.
Доброго времени суток, уважаемый all!
есть пустая dbf (без данных — шаблон), содержащая одно поле ‘8000’ типа character(50)
код:
public string[] toDBF(string FileName)
{
try {
string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""+Path.GetDirectoryName(FileName) + "";Extended Properties="dBase IV"";
System.Data.OleDb.OleDbConnection cn = new OleDbConnection(ConnectionString);
OleDbCommand ocmd = new OleDbCommand("", cn);
cn.Open();
ocmd.CommandText = "insert into [" + Path.GetFileNameWithoutExtension(FileName) + "] ([8000]) values ('asdasdad'));
ocmd.ExecuteNonQuery();
cn.Close();
} catch (Exception err) {
MessageBox.Show(err.Message);
}
}
выдает ошибку на ExecuteNonQuery:
«Инструкция INSERT INTO содержит неизвестное имя поля ‘8000’.
Проверьте, что имя задано без ошибок, и повторите операцию.»
Пробовал ставить имя поле (‘8000’) , (`8000`) не помогает… стоит лишь исправить на [T8000] все проходит на ура..
как только имя поля число сразу падает с ошибкой.. шаблон строго задан начальством, изменить не могу..
пробовал через другие варианты, например черезз OleDbDataAdapter + OleDbCommandBuilder
select из dbf работает нормально, insert нет.
insert сформированный commandbuilder’ом: «insert into table (8000) values (?)» меня совсем не обрадовал.
как быть, подскажите плиз ?
Здравствуйте, S Igor, Вы писали:
SI>Доброго времени суток, уважаемый all!
SI>есть пустая dbf (без данных — шаблон), содержащая одно поле ‘8000’ типа character(50)
SI>код:
SI>
SI>public string[] toDBF(string FileName)
SI> {
SI> try {
SI> string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""+Path.GetDirectoryName(FileName) + "";Extended Properties="dBase IV"";
SI> System.Data.OleDb.OleDbConnection cn = new OleDbConnection(ConnectionString);
SI> OleDbCommand ocmd = new OleDbCommand("", cn);
SI> cn.Open();
SI> ocmd.CommandText = "insert into [" + Path.GetFileNameWithoutExtension(FileName) + "] ([8000]) values ('asdasdad'));
SI> ocmd.ExecuteNonQuery();
SI> cn.Close();
SI> } catch (Exception err) {
SI> MessageBox.Show(err.Message);
SI> }
SI> }
SI>
SI>выдает ошибку на ExecuteNonQuery:
SI>»Инструкция INSERT INTO содержит неизвестное имя поля ‘8000’.
SI>Проверьте, что имя задано без ошибок, и повторите операцию.»
SI>Пробовал ставить имя поле (‘8000’) , (`8000`) не помогает… стоит лишь исправить на [T8000] все проходит на ура..
SI>как только имя поля число сразу падает с ошибкой.. шаблон строго задан начальством, изменить не могу..
SI>пробовал через другие варианты, например черезз OleDbDataAdapter + OleDbCommandBuilder
SI>select из dbf работает нормально, insert нет.
SI>insert сформированный commandbuilder’ом: «insert into table (8000) values (?)» меня совсем не обрадовал.
SI>как быть, подскажите плиз ?
insert into table values (?)
????
Здравствуйте, DarkSid, Вы писали:
DS>
DS>insert into table values (?)
DS>
DS> ????
то же самое
Здравствуйте, S Igor, Вы писали:
SI>Здравствуйте, DarkSid, Вы писали:
DS>>
DS>>insert into table values (?)
DS>>
DS>> ????
SI>то же самое
Вот тут описан хитрый Insert — может поможет
здесь
Возможно смени OLE DB Provider
здесь
Здравствуйте, DarkSid, Вы писали:
DS>Вот тут описан хитрый Insert — может поможет
DS>здесь
DS>Возможно смени OLE DB Provider
DS>здесь
большое спасибо
Итак, когда я запускал эту программу, я получил эту ошибку, говорящую о том, что «ShopperID» является неизвестным полем, хотя оно указано в моей базе данных в MS Access. Он также вставляет все входные данные, сделанные до возникновения этой ошибки.
Я получил ошибку:
‘Инструкция INSERT INTO содержит следующее неизвестное имя поля: ‘ShopperID’. Убедитесь, что вы правильно ввели имя, и повторите попытку.
Вот мой код:
Imports System.Data.OleDb
Public Class acer
Private Sub acer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
conn.Open()
Dim cmd As New OleDbCommand("Select Stocks from vbProduct where ProdID = @pID ", conn)
cmd.Parameters.AddWithValue("@pID", OleDbType.VarChar).Value = "P-1001"
conn.Close()
End Sub
Private Sub btnCart_Click(sender As Object, e As EventArgs) Handles btnCart.Click
Dim sdate As DateTime = Today
Dim shipdate As DateTime
shipdate = sdate.AddDays(5)
shipdate.ToString("mm/dd/yyyy")
sdate.ToString("mm/dd/yyyy")
conn.Open()
Dim cmd As New OleDbCommand("Insert into vbCart(DateTime_Created,DateTime_Checkout,Delivery_Date,ProdID,Cart_ItemsQty,Cart_Items,ShopperID)values
(@created, @checkout, @ship, @pID,@quanti,@items,@UID) ", conn)
cmd.Parameters.AddWithValue("@created", OleDbType.VarChar).Value = sdate
cmd.Parameters.AddWithValue("@checkout", OleDbType.VarChar).Value = sdate
cmd.Parameters.AddWithValue("@ship", OleDbType.VarChar).Value = shipdate
cmd.Parameters.AddWithValue("@pID", OleDbType.VarChar).Value = "P-1001"
cmd.Parameters.AddWithValue("@quanti", OleDbType.Integer).Value = nudqty.Text
cmd.Parameters.AddWithValue("@items", OleDbType.VarChar).Value = "ACER NITRO 5"
cmd.Parameters.AddWithValue("@UID", OleDbType.VarChar).Value = String.Format("{0}{1}, ", sformat, sID)
cmd.ExecuteNonQuery()
TeamAudit("ADD TO CART, ACER NITRO 5, " + String.Format("{0}{1}, ", sformat, sID) + sLast + ", " + sFirst)
conn.Close()
Me.Hide()
example.Show()
End Sub
End Class
Я уже пытался изменить его значения
1 ответ
Убедитесь, что поля в «INSERT INTO» расположены ТОЧНО в том же порядке, что и поля в базе данных Access. Я думаю, именно поэтому JayV попросил скриншот базы данных. Это укусило меня несколько раз … Удачи!
0
user2807976
26 Ноя 2022 в 23:11